TL; DRMavenで過渡的な依存関係のオーバーライドを止めるには?
私は依存関係管理の問題があります。私は私の問題の説明を簡略化したいと思いますので、私はNoClassDefFoundErrorがの完全なスタックトレースを投稿するつもりはありません.. VeryImportantStuffとなど
は簡単に言えば、私は2つの依存関係を使用します。A-1.1とB-を1.0私のプロジェクトC。 AまたはBのいずれかの別のバージョンを使用することはできません。 B-1.0は、A-1.0に依存する。 の著者は、下位互換性の規則を遵守しておらず、Aライブラリの最新バージョン(1.1)は単にクラスVeryImportantStuff.class
を持たないだけです。
<dependency>
<groupId>org.thirdparty.lib</groupId>
<artifactId>A</artifactId>
<version>1.1</version> <!-- overrides B->A version !!! (((-->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.another.thirdparty.lib</groupId>
<artifactId>B</artifactId>
<version>1.0</version>
<scope>test</scope>
<!--
<dependencyManagement>
<dearMavenIbegYouPleaseUseThisDependency>
<dependency>
<groupId>org.thirdparty.lib</groupId>
<artifactId>A</artifactId>
<version>1.0</version> PLEASE!!!
</dependency>
</dearMavenIbegYouPleaseUseThisDependency>
</dependencyManagement>
-->
</dependency>
質問それがで指定されている1.1、Aのバージョン1.0を使用する必要があることではないB(または何私は私のpom.xmlに追加することができます)を伝える方法
pom.xmlは私のアプリケーションコードがA-1.1を使用するべきであることを考慮に入れていますか?
* ... B-1.0-1.0に依存する場合*その後、B-1.0は、Aの1.0のみ、プロジェクトは1.0がちょうどBの中で 'を'使用されないことを保証するために、を使用して構築され依存関係 –
nullpointer
B-1.0を実行すると、実行時に必要なA-1.0のクラスを見つけることができません。実行時には、A-1.1クラスがあります。 – ieXcept
あなたはどういう意味ですか?* B-1.0が動作しているとき*?それを依存関係として宣言するときは、それ自体のpom.xmlに記載されている依存関係を使用して既に構築されているものとします。 – nullpointer