2013-11-25 138 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