2015-12-30 268 views
2

我無法理解depencendy:樹輸出的行爲。在高級模塊上運行插件時,我缺少它所依賴的模塊的重要信息。但是當我在較低的模塊上運行插件時,我可以看到這些依賴關係。這是顯示問題的例子(名稱變更):Maven依賴關係:樹不顯示所有傳遞依賴關係

mvn -pl foo:bar-application dependency:tree -Dincludes=foo:* 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building bar-application 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ bar-application --- 
[INFO] foo:bar-application:ear:0.0.1-SNAPSHOT 
[INFO] +- foo:bar-business:ejb:0.0.1-SNAPSHOT:compile 
[INFO] | +- foo:common-util:jar:0.0.1-SNAPSHOT:compile 
... 
[INFO] +- foo:bar-web:war:0.0.1-SNAPSHOT:compile 
[INFO] \- foo:common-logging:jar:0.0.1-SNAPSHOT:compile 
[INFO] ------------------------------------------------------------------------ 

這棵樹給出了一個depencendy到酒吧的Web,但只有一個從酒吧的Web其他項目進一步depencendy(共日誌記錄)。檢查欄應用

mvn -pl foo:bar-web dependency:tree -Dincludes=foo:* 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building bar-web 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ bar-web --- 
[INFO] foo:bar-web:war:0.0.1-SNAPSHOT 
[INFO] +- foo:common-logging:jar:0.0.1-SNAPSHOT:compile 
[INFO] +- foo:culprit-business-client:jar:0.0.1-SNAPSHOT:compile 
... 
[INFO] +- foo:common-rest:jar:0.0.1-SNAPSHOT:compile 
[INFO] | \- foo:config-business-client:jar:0.0.1-SNAPSHOT:compile 
[INFO] \- foo:bar-business:jar:0.0.1-SNAPSHOT:provided 
[INFO] \- foo:some-client:jar:0.0.1-SNAPSHOT:provided 
[INFO] ------------------------------------------------------------------------ 

爲什麼不顯示其他依賴關係:

酒吧網已經遠遠的依賴?我花了一段時間尋找罪魁禍首。 我是個使用

mvn --version 
Apache Maven 3.0.5 
+0

首先,你應該使用Maven的依賴,插件的高達最新版本,而不是這樣的古version..best是調用:'MVN org.apache.maven.plugins:Maven的依賴關係的插件:2.10:樹'... – khmarbaise

+0

感謝您的提示。我確實嘗試了版本2.10,但輸出完全相同。 – SebastianH

+0

我也看到同樣的行爲。 'mvn dependency:tree'列出了所有的傳遞依賴,除了一個特定的依賴X,它的傳遞依賴沒有列出。當我在X的'pom.xml'上運行'mvn dependency:tree'時,它列出了與這個問題非常相似的所有依賴關係。 – morpheus

回答

2

一戰包括它的依賴在歸檔中,這就是爲什麼Maven不包括及物動詞傳播他們視WAR神器等文物。

+0

但是,當運行像** compile **這樣的maven目標時,依賴被識別幷包含在構建中。列出依賴關係時,有沒有辦法強制執行這種行爲?我的問題在於找到導致不需要的項目出現在我的構建中的不需要的依賴項。 – SebastianH

+0

另外:如果你是正確的,爲什麼**共記錄**所示爲其他相關性的**吧,網絡**的依賴,但沒有? – SebastianH

+2

'mvn dependency:tree'默認會排除重複的依賴關係。原因是Java類路徑的工作方式;如果(比如說)a.jar已經被包含在類路徑中,那麼在類路徑中再次聲明「稍後」是沒有意義的。如果您使用'-Dverbose = true'運行該命令,則該插件將包含省略的工件。 – Daniel