プロジェクトを maven 2 (2.2.1) から maven 3 (3.1.0) に移行していますが、jar バージョンに問題があります。問題を追跡しようとすると、依存関係プラグインから一貫性のない結果が得られ、混乱しました。
Maven 3で次のコマンドを試したとき:
mvn dependency:tree -Dincludes=commons-codec
結果は次のとおりです。
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ xxx ---
[INFO] com.xxx.yyy:zzz:war:2.6-SNAPSHOT
[INFO] \- net.sourceforge.jwebunit:jwebunit-htmlunit-plugin:jar:2.2:test
[INFO] \- net.sourceforge.htmlunit:htmlunit:jar:2.5:test
[INFO] \- commons-codec:commons-codec:jar:1.3:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
したがって、結果はcommons-codec-1.3.jarが使用されることを示唆しています。(maven 3 には、圧縮時に commons-codec-1.3.jar が含まれます)。
ただし、コマンドにオプション (-Dverbose) を追加すると、
mvn dependency:tree -Dincludes=commons-codec -Dverbose
結果は
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ xxx ---
[INFO] com.xxx.yyy:zzz:war:2.6-SNAPSHOT
[INFO] +- net.sourceforge.jwebunit:jwebunit-htmlunit-plugin:jar:2.2:test
[INFO] | \- net.sourceforge.htmlunit:htmlunit:jar:2.5:test
[INFO] | +- commons-httpclient:commons-httpclient:jar:3.1:test
[INFO] | | \- (commons-codec:commons-codec:jar:1.2:test - omitted for conflict with 1.3)
[INFO] | \- (commons-codec:commons-codec:jar:1.3:compile - scope updated from test; omitted for duplicate)
[INFO] \- xxx.yyy.zzz.core:www-core:jar:2.6-SNAPSHOT:compile
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.2.2:compile
[INFO] | \- commons-codec:commons-codec:jar:1.6:compile
[INFO] \- xxx.yyy.zzz.security:datasecurity:jar:2.0:compile
[INFO] \- (commons-codec:commons-codec:jar:1.3:compile - omitted for conflict with 1.6)
[INFO] ------------------------------------------------------------------------
2 番目の結果は、バージョン1.2と1.3が競合のために省略され、maven が1.6を使用することを示唆しています。maven 3がwarファイルにcommons-codec-1.3.jarをパッケージ化して以来、明らかにそうではありませんでした。
Maven 3 のプラグインが 2 つのケースで異なる依存関係を提案したのはなぜですか? それはバグですか、それとも何か不足していますか?
maven 2はcommons-codec-1.6.jarでパッケージ化されることに注意してください。
毎秒:
- Maven Dependency Plugin のバージョン 2.5 以降、dependency:tree は Maven 3 で動作します - Maven3 - 依存関係の解決方法を見つけるにはどうすればよいですか? ( mvn depedency:tree は mvn3 では機能しません)
- verbose: シリアル化された依存関係ツリーに省略されたノードを含めるかどうか。- http://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html