在我的 Maven 项目(包含子项目的聚合项目)中,我为 Versions Maven Plugin 发出以下命令:
mvn versions:display-dependency-updates
有一些过时的依赖项,我不确定它们来自哪里:
[INFO] The following dependencies in Dependency Management have newer versions:
[INFO] biz.aQute.bnd:biz.aQute.bnd.annotation ................ 6.4.1 -> 7.0.0
[INFO] org.mockito:mockito-inline ............................ 4.8.1 -> 5.2.0
不幸的是,尽我所能,我找不到哪个库引用了这些。我已经在根项目和子项目中使用 Maven Dependency Plugin 尝试了以下操作:
mvn dependency:tree
输出均未提及
biz.aQute.bnd:biz.aQute.bnd.annotation
或 org.mockito:mockito-inline
。
两名嫌疑人是:
com.amazonaws:aws-lambda-java-log4j2:1.6.0
或 org.apache.logging.log4j:log4j-bom:2.21.1
(对于 biz.aQute.bnd:biz.aQute.bnd.annotation
)com.fasterxml.jackson:jackson-bom:2.15.3
(对于org.mockito:mockito-inline
)但这些只是基于我在出现这些过时依赖项的子项目中进行的额外依赖项管理的怀疑。
我可以使用任何命令来找出哪个依赖项引入了版本 Maven 插件列出的过时依赖项吗?
Maven 用户邮件列表中的某人向我指出了 Maven Help Plugin,它有一个
effective-pom
目标和 verbose
选项。我已经知道有效的 POM,但我没有意识到目标有一个 verbose
选项
mvn help:effective-pom -Dverbose=true
这使我能够对各个依赖项以及每个来自的 POM 进行有效的依赖项管理,甚至包含行号。
尾声:原来
biz.aQute.bnd:biz.aQute.bnd.annotation:6.4.1
来自org.apache.logging:logging-parent:10.1.1
。并且 org.mockito:mockito-inline:4.8.1
正在进入,因为我忘记了我自己的一个库 😊 尚未更新以使用我较新的根 POM(管理测试库的版本)。