直接用mvn dependency:tree命令可查依赖冲突,关键在于加-Dincludes聚焦目标库、用-Dverbose查看仲裁细节(如“omitted for conflict”)、导出文件便于搜索比对,再结合IDEA的“Show Dependencies”可视化识别红色冲突项。

直接用 mvn dependency:tree 命令就能查 Maven 依赖冲突,关键不是“能不能运行”,而是“怎么看出冲突”和“怎么定位问题根源”。下面说几个真正管用的操作方式。
快速识别冲突:加过滤参数看目标依赖
不加筛选时依赖树太长,容易漏掉关键信息。聚焦你要排查的库,比如 Jackson、Guava 或 Commons-Logging:
mvn dependency:tree -Dincludes=com.fasterxml.jackson.core:jackson-databindmvn dependency:tree -Dincludes=com.google.guava:guavamvn dependency:tree -Dincludes=org.apache.commons:commons-lang3
输出中如果看到同一 groupId:artifactId 出现多个版本(比如 jackson-databind:2.11.4 和 jackson-databind:2.15.2),就说明存在版本冲突。
看清依赖路径:用 -Dverbose 显示仲裁细节
默认输出只显示最终生效的版本,看不出为什么选它。加上 -Dverbose 可以看到 Maven 是按“最短路径优先”还是“先声明优先”选中的:
立即学习“Java免费学习笔记(深入)”;
mvn -Dverbose dependency:tree -Dincludes=com.google.guava:guava
输出里会标出类似 [WARNING] com.google.guava:guava:jar:20.0:compile - omitted for conflict with 30.1.1-jre 的提示,说明 20.0 被 30.1.1-jre 排除了,并告诉你排除依据(比如路径更短或声明更早)。
导出到文件:方便搜索和比对
终端滚动太快,一晃就错过。直接导出成文本,用编辑器搜索更稳妥:
mvn dependency:tree > deps-tree.txtmvn dependency:tree -Dincludes=com.fasterxml.jackson.core:jackson-databind > jackson-deps.txt
打开文件后,Ctrl+F 搜 jackson-databind,所有引入路径一目了然,哪个模块带进来的低版本、哪个是 Spring Boot 自带的,都清清楚楚。
配合 IDE 查看可视化依赖图
IntelliJ IDEA 内置了依赖分析功能:打开 pom.xml → 右键 → Maven → Show Dependencies。界面中带红色虚线的节点就是冲突项,鼠标悬停能看到具体哪些路径引入了不同版本,点击还能跳转到对应 <dependency></dependency> 声明位置,省去手动翻 pom 的时间。


















