2

プロジェクトを 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.21.3が競合のために省略され、maven が1.6を使用することを示唆しています。maven 3がwarファイルにcommons-codec-1.3.jarをパッケージ化して以来、明らかにそうではありませんでした。

Maven 3 のプラグインが 2 つのケースで異なる依存関係を提案したのはなぜですか? それはバグですか、それとも何か不足していますか?

maven 2はcommons-codec-1.6.jarでパッケージ化されることに注意してください。

毎秒:

4

1 に答える 1