如何读取Maven依赖树

use*_*680 53 java maven

我在pom.xml中提供了servlet-api版本2.5作为范围.这是依赖项的一部分:我的项目的树输出."从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)
Run Code Online (Sandbox Code Playgroud)

这是否意味着我的类路径上版本2.3存在一些传递依赖?我的WAR文件根本没有servlet-api jar,但是我确实使用了旧版本的Spring 2.5.4.我怀疑Spring框架依赖于servlet-api 2.3.

DB5*_*DB5 51

该消息基本上意味着versionservlet-api的传递性为2.3(因此基本上在commons-logging的pom中它们定义了版本为2.3的servlet-api),但是在你的项目中特别要求版本2.5,所以这就是用过的.

范围也是如此.在commons-logging的pom中,它是用范围定义的compile,但是你用范围定义它provided,所以再次使用的是范围.

  • 除了我的情况(spring-data-mongodb)之外,我找不到覆盖托管版本的位置。 (3认同)
  • 有没有办法找出版本被覆盖的位置?它不在我的父母身上 (3认同)
  • @AndreasRadauer: `mvn help: effective-pom -Dverbose=true > pom- effective.xml` 列出了 maven 解析的全部信息 - “有效”POM,无需进一步的外部依赖项,并且在详细模式下包括有关哪个配方和的注释它来自的线路。然而,对我来说,它打印了它决定使用的版本 - 没有提及它决定放弃的其他版本(或为什么)...... (2认同)

lic*_*gwu 7

这意味着,你的项目已经覆盖了versionscope其他依赖.