2013-11-25 176 views
37

我有servlet-api版本2.5作爲pom.xml中提供的範圍。下面是我的項目的依賴項的一部分:樹的輸出。 「從2.3版本管理的版本;從編譯管理的範圍」是什麼意思?如何讀取Maven依賴關係樹

[INFO] +- commons-logging:commons-logging:jar:1.1:compile 
[INFO] | \- javax.servlet:servlet-api:jar:2.5:provided (version managed from 2.3; scope managed from compile) 

這是否意味着在我的類路徑上存在對版本2.3的一些傳遞依賴性?我的WAR文件根本沒有servlet-api jar文件,但我使用舊版本的Spring 2.5.4。我懷疑Spring框架依賴於servlet-api 2.3。

回答

32

消息基本上意味着servlet的API的version會傳遞地被2.3(所以基本上在共享記錄的POM,他們定義的servlet-API 2.3版本),而2.5版在你的項目中特別要求,所以這就是使用的。

同樣適用於範圍。在commons-logging的pom中,它的範圍是compile,但是您已將其定義爲範圍provided,所以這也是使用的範圍。

+1

除了我的情況(spring-data-mongodb),我無法找到重寫託管版本的位置。 – OrangeDog

+0

@OrangeDog我有類似的問題。我發現舊版本的httpclient來自spring-boot-starter-parent pom。 – chalimartines

+0

請注意,它們也可以在「父母」pom中重寫,所以一定要仔細檢查那裏...... – rogerdpack

4

這意味着您的項目已經覆蓋了其他依賴關係的versionscope