簡體   English   中英

Maven依賴關系樹顯示父罐中不存在的依賴關系?

[英]maven dependency tree showing dependency that is not present in parent jar?

我在模塊上運行了mavendependency:tree。 這是此輸出的代碼段。

[INFO] +- org.springframework:spring-webmvc:jar:4.0.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-beans:jar:4.0.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-expression:jar:4.0.2.RELEASE:compile
[INFO] |  \- org.springframework:spring-web:jar:4.0.2.RELEASE:compile
[INFO] +- javax.servlet:javax.servlet-api:jar:3.0.1:provided
[INFO] +- org.apache.httpcomponents:httpcore:jar:4.3.2:compile
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.3.2:compile
[INFO] |  \- commons-codec:commons-codec:jar:1.6:compile
[INFO] +- org.apache.commons:commons-lang3:jar:3.2.1:compile
[INFO] +- commons-lang:commons-lang:jar:2.6:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.5.0:compile
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.5.0:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.5.0:compile
[INFO] +- com.newrelic.agent.java:newrelic-api:jar:3.6.0:compile

我從org.apache.httpcomponents:httpclient:jar:4.3.2看到了對commons-codec:commons-codec:jar:1.6 transitive dependency

但我在$M2_HOME/org/apache/httpcomponents/httpclient/4.3.2/httpclient-4.3.2.jar找不到此jar。

我也沒有在Eclipse的“引用的庫”或“ maven依賴項”中看到此jar。 我的項目Base64Util來自commons-codec類,編譯良好。

依賴關系在POM中定義,您可以在此處看到:

http://central.maven.org/maven2/org/apache/httpcomponents/httpclient/4.3.2/httpclient-4.3.2.pom

commons編解碼器具有編譯依賴性。 它具有對httpcomponents-client的父pom引用,該引用將版本定義為1.6,如下所示:

http://central.maven.org/maven2/org/apache/httpcomponents/httpcomponents-client/4.3.2/httpcomponents-client-4.3.2.pom

因此,maven輸出正確,並且將提供庫。 現在,如果您在代碼中使用該庫中的類,則建議在pom中具有顯式依賴項。

Maven構建此依賴關系樹以查看需要哪些庫,因為每個jar僅包含其自己的類,而不包含依賴項。 Maven將驗證是否有多個庫要求相同的依賴關系,並且所使用的版本將與兩個庫一起使用。 有時,它找不到解決方案,並且會因依賴關系解決錯誤而一氣之下。 當它具有庫列表時,它將下載它們並將它們放在java類路徑上進行編譯,等等。

這是必需的,因為普通的Java類加載器會將所有類放在同一名稱空間中。 情況並非總是如此,例如servlet容器每次大戰都會創建一個類加載器,osgi容器每個捆綁創建一個類加載器,但是所有這些系統都是有代價的:奇怪的ClassCast異常,因為一個類在多個類加載器中加載。 這就是jars在獨立的uberjar中不包含其依賴項的原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM