idea如何解决maven依赖冲突
最近在一个老spring项目上面需要适配一个新功能,过程中也需要升级spring的版本,然后最后就导致maven的依赖包很乱,同一个包存在多个版本,本文就记录下使用idea解决maven的依赖冲突,同时记录下assembly打包插件的坑。
依赖冲突解决
首先打开pom文件,然后右键按如下图选择进入到该pom文件的整个依赖关系图

依赖关系图一般都很大,基本看不清,如下:

如果你知道哪些包产生冲突,那么mac下可直接common+f快捷搜索

然后找到对应的包排除即可,这里的红色虚线即表示与哪些jar包产生冲突,如下图可以看到spring-aop存在两个版本,导致冲突,排除即可:


此时pom文件中会自动排除,在对应的依赖上会增加exclusion标签

ps:如果你不知道哪些jar包产生冲突,那么需要你首先将整个依赖图变成1:1,这样会看的清楚点
![]()
assembly插件版本的坑
改完所有依赖冲突后,以spring为例,即maven中将spring的版本都已更改为4.2.0,但本地打了包验证发现部分jar包仍然依赖了4.1.9的spring,即spring升级前的版本,这就非常奇怪,通过mvn dependency:tree -D output=test.txt尝试输出依赖树,发现依赖树中也都是正确的,即都是4.2.0,并没有4.1.9的spring包。
既然本地依赖都是正确的,那么出问题的可能就在打包的过程中,由于我们项目使用到了assembly插件,初步怀疑与它的版本有关,尝试在某个进程下升级了版本号,果然生效了...猜想估计低版本的assembly在打包过程中可能不会去下载高版本的spring把,升级之前的assembly插件版本为2.6,升级后为3.1.1,仅作记录。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring Boot中使用MongoDB的连接池配置的方法
本文介绍了Spring Boot中使用MongoDB的连接池配置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-03-03
springboot整合JavaCV实现视频截取第N帧并保存图片
这篇文章主要为大家详细介绍了springboot如何整合JavaCV实现视频截取第N帧并保存为图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下2023-08-08
基于RxPaparazzo实现图片裁剪、图片旋转、比例放大缩小功能
这篇文章主要为大家详细介绍了基于RxPaparazzo实现图片裁剪、图片旋转、比例放大缩小功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-05-05


最新评论