使用命令:
mvn dependency:tree产看依赖层级,只能显示两层级
mvn dependency:tree -Dverbose 产看所有依赖层级
文章图片
mvn dependency:tree -Dverbose -Dincludes=guava 通过关键字过滤我们感兴趣的冲突
解决思路参看
简介:处理jar包依赖冲突,首先,对于多个jar包都引用同一jar包的情况,最好是在程序中显式定义被共同引用的jar包的依赖,来统一版本号,方便维护
如果A和B都依赖同一jar包C,可能会出现两种情况
1.A和B引用的C版本相同,这时按照pom定义顺序选择第一个即可,没有冲突问题,如果在项目的maven中显示定义了C依赖,那么用选择项目定义的依赖,反正version都一样,没有影响
2.A和B依赖的C版本不同,选择版本高的那个,这时会出现两种结果
(1) 高版本兼容低版本,所以不会出现问题
(2)高版本不兼容低版本,假如A依赖C2版本,B依赖C3版本,C3不兼容C2,maven选择了高版本C3,对A来说会出现问题
有3种解决方法
[1]提升A版本,找到依赖C3的A版本
[2]如果B版本也可依赖C2,在项目的maven中显示定义对C2的依赖,这样所有都使用C2版本
[3]如果B版本不支持C2版本,只能降低B版本,找到依赖C2的B版本
从功能性和可维护性考虑,高版本提供的功能更多,bug更少,优先考虑1
再考虑2
最后考虑3
【jar包依赖冲突】参考
https://blog.csdn.net/u010003...
推荐阅读
- 笔记|scala与java的一些不同点
- Spring Boot 2.7.0发布,2.5停止维护,节奏太快了吧
- 【JAVA并发编程】Condition的实现原理
- 在WebSphere中生成堆转储,Java核心和系统转储
- 为什么强烈不推荐使用stop、suspend方法来中断线程()
- 如何分析WebSphere Java堆转储以进行故障排除
- 如何使用Jconsole在WebSphere和Monitor中启用JMX()
- Buggy Java代码(Java开发人员最常犯的10个错误)
- 高级Java类教程(类重载指南)