如何查找Versions Maven Plugin检测到的过时依赖来源?
查找Maven依赖管理中未被引用依赖的来源
以下是几个实用命令和方法,帮你定位这两个依赖的引入来源:
1. 查看包含依赖管理条目的完整依赖树
默认的dependency:tree仅显示项目实际引用的依赖,加上-DshowDependencyManagement=true参数后,会列出所有在dependencyManagement中声明的依赖(包括从BOM导入的),结合-Dincludes精准过滤目标依赖:
mvn dependency:tree -DshowDependencyManagement=true -Dincludes=biz.aQute.bnd:biz.aQute.bnd.annotation,org.mockito:mockito-inline
执行后会清晰展示这两个依赖是直接在项目的dependencyManagement中声明,还是通过某个导入的BOM引入的。
2. 直接分析可疑BOM的内容
针对你怀疑的几个BOM,用dependency:describe命令查看其管理的所有依赖明细:
- 检查AWS Lambda log4j2依赖:
mvn dependency:describe -DgroupId=com.amazonaws -DartifactId=aws-lambda-java-log4j2 -Dversion=1.6.0 -Ddetail
- 检查Log4j BOM:
mvn dependency:describe -DgroupId=org.apache.logging.log4j -DartifactId=log4j-bom -Dversion=2.21.1 -Ddetail
- 检查Jackson BOM:
mvn dependency:describe -DgroupId=com.fasterxml.jackson -DartifactId=jackson-bom -Dversion=2.15.3 -Ddetail
命令输出里会列出该BOM管理的所有依赖,直接确认是否包含目标依赖。
3. 检测依赖管理中未被使用的依赖
用dependency:analyze命令找出dependencyManagement中存在但未被项目实际引用的依赖,可结合子模块执行(如果聚合项目下有多个子模块):
# 针对根项目执行 mvn dependency:analyze -DignoreNonCompile # 针对特定子模块执行 mvn -pl 你的子模块名称 dependency:analyze -DignoreNonCompile
输出中的Unused declared dependencies in dependencyManagement部分会列出这类依赖,同时可能间接提示来源。
4. 手动排查dependencyManagement配置
直接检查根项目和所有子项目的pom.xml中<dependencyManagement>节点,重点看通过<scope>import</scope>导入的BOM条目,这些BOM会将自身管理的依赖注入到项目的dependencyManagement中。
内容的提问来源于stack exchange,提问作者Garret Wilson
相关产品推荐
相关产品推荐

