java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > maven依赖冲突解决

maven解决依赖冲突的三种解决方法

作者:moutory

依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成了包版本冲突,本文主要介绍了maven解决依赖冲突的三种解决方法,具有一定的参考价值,感兴趣的可以了解一下

前言

随着maven项目不断推进,开发人员难免会遇到这样一个问题,在添加新的依赖jar包后,会发现和原有的项目依赖产生冲突(多数情况是由于依赖传递引起的),这个时候就需要我们根据实际情况来选择生效的最终依赖。

比如下图:

下面将以上面的例子来对如何解决依赖冲突进行讲解

方法一:使用maven提供的传递依赖原则

(一)第一声明者优先原则

其实所谓第一声明者,就是在pom文件中,优先使用书写顺序排在前面的依赖包,也就是谁先声明,就先用谁的依赖。
如果我们想在我们的项目中使用5.0.2版本的spring-bean包的话,只需要调整一下依赖的顺序即可。

(二)路径者优先原则

路径者优先原则也很好理解,如果有两个依赖版本冲突了,那么就显式地在pom文件中把要使用的依赖添加上去。

这种方法虽然简单直接,但是只适合于项目依赖的jar包比较少的场景,一旦管理的依赖数量达到一定数量,简单的调整依赖的顺序并不能解决实际冲突问题。
在实际开发中很少应用到。

方法二:排除依赖(有时候会用到)

排除依赖的思路也很简单,如果有两个依赖的版本发生了冲突,那么只要把其中一个依赖给排除掉,只剩下一个依赖,那么自然就可以解决冲突的问题。
我们只需要使用exclusion关键字对相关依赖进行排除就行

方法三:版本锁定(最常用,推荐使用)

对于版本冲突的问题,我们最常使用的解决方式,是使用dependencyManagement统一对依赖的版本进行定义。这样的话,导入依赖的时候就会直接使用我们锁定的依赖版本。

这里要注意两点,版本锁定和使用路径优先原则不同,使用路径优先原则,是实实在在地将jar包给引入到pom文件中,而版本锁定只是规定了要使用的版本号,只有真实用到了相关的依赖,才生效。同时,版本锁定可以更集中地约束和规定依赖版本,这种优势是其他方法所不能达到的。

当然了,如果只是简单的小型项目,使用其他方式可能是更好的解决方法。

到此这篇关于maven解决依赖冲突的三种解决方法的文章就介绍到这了,更多相关maven依赖冲突解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文