我正在將我的項目從maven 2(2.2.1)遷移到maven 3(3.1.0),而我在使用jar版本時遇到了一些問題。當我試圖追查這個問題時,我遇到了一些與相關性插件不一致的結果,這使我感到困惑。maven 3依賴插件 - 不一致的結果
當我在行家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
因此結果表明公地編解碼器-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] ------------------------------------------------------------------------
第二個結果表明,版本1.2 和 1.3 將因衝突而被省略,並且maven將使用1.6。顯然它並非如此,因爲maven 3打包commons-codec-1.3.jar在war文件中。
爲什麼maven 3中的插件在兩種情況下顯示不同的依賴關係(它不應該像-Dverbose應該只顯示哪些依賴關係被省略以及爲什麼)?這是一個錯誤還是我錯過了什麼?
這是值得大家注意的是行家2將打包帶公地編解碼器1.6.jar。
P/S:
- 由於Maven的依賴插件的版本2.5,依賴:樹的工作原理與Maven 3 - Maven3 - How do I found dependency resolution? (mvn depedency:tree does not work for mvn3)
- 冗長:是否包括在序列化依賴關係樹省略節點。 - http://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html
請看看[這裏](https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes) – khmarbaise
謝謝,我做到了。我明白,在某些情況下,maven 2和maven 3之間的依賴關係可以解決不同。我不明白的是「爲什麼插件在兩種情況下建議不同的依賴關係,只是因爲」-Dverbose「)。 – oppjinx