これは非常に面倒です。私は、JARファイルとしてA
に依存して2つのプロジェクト、プロジェクトA
とB
、B
を持っています。重複したバージョンの依存関係の解決
commons-beanutils:jar:1.9.2 vs. commons-beanutils:jar:1.8.0
をそして:だからAにおける第三のライブラリX
は、別のサードパーティのライブラリY
に依存している、問題はMavenのは、以下のように、別のバージョンへのバージョンにプロジェクトA
でY
を解決しますが、プロジェクトB
であります下記のプロジェクトA
で指定されたバージョン:プロジェクトB
ののpom.xmlで
net.sf.json-lib:json-lib:jar:jdk15:2.4
は、実際の依存関係の明示的に指定されたバージョンがありません。唯一の理由A
のY
への依存を紹介するプロジェクトB
で
[INFO] +- net.sf.json-lib:json-lib:jar:jdk15:2.4:compile
[INFO] | +- commons-beanutils:commons-beanutils:jar:1.9.2:compile
[INFO] | +- commons-collections:commons-collections:jar:3.2.1:compile
[INFO] | \- net.sf.ezmorph:ezmorph:jar:1.0.6:compile
:プロジェクトA
で
[INFO] +- A.jar
[INFO] | +- net.sf.json-lib:json-lib:jar:jdk15:2.4:compile
[INFO] | | +- commons-beanutils:commons-beanutils:jar:1.8.0:compile
[INFO] | | +- commons-collections:commons-collections:jar:3.2.1:compile
[INFO] | | \- net.sf.ezmorph:ezmorph:jar:1.0.6:compile
理想的なソリューションだけにプロジェクトB
にpom.xml
に変更を加えることです重複したバージョンの依存関係を解決してください。何か案が?ありがとう!
プロジェクトB
を独自のものを導入するのではなく、A.jar
から継承させることは可能ですか?
EDIT
最後に、私は働いていた何かを見つけたので、私はちょうど誰かが後で同じ問題に直面することができる場合には、ここでそれを置くと思います。 Mavenのは、単にプロジェクトAで定義されているライブラリのバージョンを使用していますが、現在のコンテキストに基づいてバージョンを動作しませんので
キーは、依存関係が除外にプロジェクトAに付属して置くことです。以下はその例です。
<dependency>
<groupId>com.wonderland</groupId>
<artifactId>project-a</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
</exclusion>
<!-- ... everything else to be excluded -->
<exclusions>
</dependency>
問題は何ですか? Mavenは、POMで宣言されたバージョンを使用して競合を解決することを意図しているように動作しているようです。 – Tunaki
問題は、依存関係の両方のバージョンが戦争に終わることです。2つのプロジェクトがBOMを共有して不一致を解決できることは分かっていますが、残念ながらここでは選択肢ではありません。 –
どのWARですか?そしてそのPOMは何ですか? 'WEB-INF/lib'には重複はありません。 – Tunaki