これが私の一般的な問題です:
私のプロジェクトPは、バージョン1.0.1のDに依存するCに依存するBに依存するAに依存しています。
Dのバージョン1.0.1に問題があり、別のモジュールを強制的に使用したい。Dへの依存関係を直接追加していないため、プロジェクトのPOMでこれを宣言する方法がわかりません。Dへの依存を宣言したのはCです。
重要:この場合、バージョンだけでなく、グループとアーティファクトも変更されます。したがって、依存関係のバージョンをオーバーライドするだけでなく、モジュールを除外して別のモジュールを含めることも重要です。
具体的なケースでは、Dは1.0.1にバグがあるStAX です。バグのメモによると、「問題はstax-api-1.0.1(maven GroupId = stax)をstax-api-1.0-2(maven GroupId = javax.xml.stream)に置き換えることで解決された」ので、ちょうどそれを試みています。
したがって、D = stax:stax-api:jar:1.0.1およびC = org.apache.xmlbeans:xmlbeans:jar:2.3.0
必要に応じて、Maven 2.0.9を使用しています。
mvn dependency:treeの出力
mvn dependency:tree
[..snip..]
[INFO] +- org.apache.poi:poi-ooxml:jar:3.6:compile
[INFO] | +- org.apache.poi:poi-ooxml-schemas:jar:3.6:compile
[INFO] | | +- org.apache.xmlbeans:xmlbeans:jar:2.3.0:compile
[INFO] | | | \- stax:stax-api:jar:1.0.1:compile
私のプロジェクトのPOMでは、「A」に次の依存関係があります。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.6</version>
</dependency>
前もって感謝します。