版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HcJsJqJSSM/article/details/84337870
一:问题背景.
Maven依赖使用方便,但是出现了依赖冲突后,一般如何解决呐?本文将以IDEA为开发工具介绍一下.
方式一:使用Maven-Helper插件(推荐)
1.1 Maven插件准备.(Maven-Helper插件).
下载后,重新启动IDEA,即可使用.
1.2 Maven-Helper使用.
点击项目的pom.xml文件.
目前项目使用的版本号是2.5的.但是有2.3的依赖存在,导致发生了冲突,如果有许多的version的,也只会使用一个其他的就会标红表示发生了依赖冲突的.
方式一:查找Source所在的位置.
方式二 查找source所在的位置.
1.3 目前是发现了冲突所在的详细位置了,接下来就是解决冲突了.
方式二(pom.xml文件鼠标右键)
但是这个oss对象的依赖包的冲突解决了,但是会出现问题,由于那个common-lang是Apache的工具类,那个<exclusion>标签又不加version标签,如果去掉那里这里的2.3的版本和2.5的版本就都去掉了.显然是不合理的.不建议去掉这里的冲突.
简单总结一个Maven依赖冲突管理中的几个原则.
- 依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version)构成。如果两个相同的依赖包,如果groupId, artifactId, version不同,那么maven也认为这两个是不同的。(唯一性)
- 依赖会传递,A依赖了B,B依赖了C,那么A的依赖中就会出现B和C。(依赖传递性)
- Maven对同一个groupId, artifactId的冲突仲裁,不是以version越大越保留,而是依赖路径越短越优先,然后进行保留。(最短路径)
- 依赖的scope会影响依赖的影响范围的.