如何阅读 Maven 依赖关系树

2022-08-31 15:27:26

我有servlet-api版本2.5,如pom.xml中提供的范围。下面是我的项目的依赖项:树输出的一部分。什么是“版本从2.3管理;从编译管理范围“意味着?

[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。


答案 1

该消息基本上意味着servlet-api的传递应该是2.3(所以基本上在commons-logging的pom中,他们用2.3版本定义了servlet-api),但是在你的项目中特别要求2.5版本,所以这就是使用的。version

范围也是如此。在 commons-logging 的 pom 中,它是用 scope 定义的,但是你用 scope 定义了它,所以这也是使用的作用域。compileprovided


答案 2

这意味着您的项目已覆盖 和 来自其他依赖项。versionscope


推荐