2011-01-28 35 views
14

私はWoodstoxとXStreamの両方に依存するmavenプロジェクトを持っています。残念ながら、XStreamもWoodstoxに依存していますが、必要なバージョンより少し古いバージョンです。その間、Woodstoxライブラリのアーティファクト名が変更されたため、同じアーティファクトの複数のバージョンは考慮されません。しかし、パッケージ名とクラス名は同じです。つまり、実行時に競合が発生します。Mavenの同じ依存関係の異なるバージョン

私は明らかに古いwoodstox jarをビルドから外すことができました(私たちの場合はwarファイル)。このタイプの問題を解決する適切な方法は何ですか?

答えて

18

xstreamのdependency宣言にexcluding woodstoxの依存関係を試してみることができます。運がよければ

<dependency> 
     <groupId>xstream.group</groupId> 
     <artifactId>xstream</artifactId> 
     <version>a.b.c</version> 
     <exclusions> 
      <exclusion> 
       <groupId>woodstox.group</groupId> 
       <artifactId>woodstox</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
+6

+1しかし、残念ながら、新しいバージョンは古いバージョンと同じクラス名とパッケージ名を持っている必要があります。それ以外の場合は下位互換性があります。 –

+0

これはまさに私が必要としているようです。 – biziclop

5

、Raghuramによって提案されたソリューションは、動作します。

ない場合は、両方のXStreamのは1瓶、renaming all woodstox packagesにwoodstoxマージ、おそらくMaven Shade Pluginを使用して、XStreamのジャーの修正版を作成する必要があります。