目录
- 依赖冲突解决
- assembly插件版本的坑
- 总结
最近在一个老spring项目上面需要适配一个新功能,过程中也需要升级spring的版本,然后最后就导致maven的依赖包很乱,同一个包存在多个版本,本文就记录下使用idea解决maven的依赖冲突,同时记录下assembly打包插件的坑。
依赖冲python突解决
首先打开pom文件,然后右键按如下图选择进入到该pom文件的整个依赖关系图
依赖关系图一般都很大,基本看不清,如下:
如果你知道哪些包产生冲突,那么MAC下可直接common+f快编程捷搜索
然后找到对应的包排除即可,这里的红色虚线即表示与哪些jar包产生冲突,如下图可以看到spring-aop存在两个版本,导致冲突,排除即可:
此时pom文件中会自动排除,在对应的依赖上会增www.devze.com加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把,升级php之前的assembly插件版本为2.6,升级后为3.1.1,仅作记录。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论