IDEA下解决Maven依赖冲突

版权声明:本文为博主原创文章,未经博主允许不得转载。 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依赖冲突管理中的几个原则.

  1. 依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version)构成。如果两个相同的依赖包,如果groupId, artifactId, version不同,那么maven也认为这两个是不同的。(唯一性)
  2. 依赖会传递,A依赖了B,B依赖了C,那么A的依赖中就会出现B和C。(依赖传递性)
  3. Maven对同一个groupId, artifactId的冲突仲裁,不是以version越大越保留,而是依赖路径越短越优先,然后进行保留。(最短路径)
  4. 依赖的scope会影响依赖的影响范围的.

猜你喜欢

转载自blog.csdn.net/HcJsJqJSSM/article/details/84337870