私は、POMに依存するJavaライブラリB
を使用するmavenプロジェクトA
を持っています。そのライブラリはライブラリD
を使用する他のライブラリC
を使用します。 A
とC
の両方がそのライブラリD
を使用していて、バージョンが異なるコンパイルで問題が発生します。それは次のようになります。各JARに異なるバージョン依存関係を使用する方法
A ----- B
| |
D(v1) C
|
D(v2)
A
D(v2)
への依存関係を変更することはできませんが、また、私はA
さんにPOM D(v2)
を除外した場合:
<dependency>
<groupId>...</groupId>
<artifactId> C </artifactId>
<exclusions>
<exclusion>
<groupId>...</groupId>
<artifactId> D </artifactId>
<version> v2 </version>
</exclusion>
</exclusions>
</dependency>
を私はいくつかのクラスMissingClassというコンパイルエラーになりますはクラスC
で解決されません。最も迷惑なことは、D(v2)
にはがありません。クラスがありません。
私はMavenのはA
でD(v1)
依存関係を使用しての場合、およびB
でD(v2)
の場合されていることを確認するためにいくつかの方法があるのMavenとやや習熟していないのですか?
できません。クラスパスには1つのバージョンのDしか存在できません。 'A'が' v2'と互換性がなく、 'C'が' v1'と互換性がない場合は、プロジェクトで 'A'と' C'の両方を使用することはできません。 'v1'と互換性のある古いバージョンの' C'を使用してください。 – Andreas