maven解决依赖冲突的三种解决方法
前言
随着maven项目不断推进,开发人员难免会遇到这样一个问题,在添加新的依赖jar包后,会发现和原有的项目依赖产生冲突(多数情况是由于依赖传递引起的),这个时候就需要我们根据实际情况来选择生效的最终依赖。
比如下图:
下面将以上面的例子来对如何解决依赖冲突进行讲解
方法一:使用maven提供的传递依赖原则
(一)第一声明者优先原则
其实所谓第一声明者,就是在pom文件中,优先使用书写顺序排在前面的依赖包,也就是谁先声明,就先用谁的依赖。
如果我们想在我们的项目中使用5.0.2版本的spring-bean包的话,只需要调整一下依赖的顺序即可。
(二)路径者优先原则
路径者优先原则也很好理解,如果有两个依赖版本冲突了,那么就显式地在pom文件中把要使用的依赖添加上去。
这种方法虽然简单直接,但是只适合于项目依赖的jar包比较少的场景,一旦管理的依赖数量达到一定数量,简单的调整依赖的顺序并不能解决实际冲突问题。
在实际开发中很少应用到。
方法二:排除依赖(有时候会用到)
排除依赖的思路也很简单,如果有两个依赖的版本发生了冲突,那么只要把其中一个依赖给排除掉,只剩下一个依赖,那么自然就可以解决冲突的问题。
我们只需要使用exclusion关键字对相关依赖进行排除就行
方法三:版本锁定(最常用,推荐使用)
对于版本冲突的问题,我们最常使用的解决方式,是使用dependencyManagement统一对依赖的版本进行定义。这样的话,导入依赖的时候就会直接使用我们锁定的依赖版本。
这里要注意两点,版本锁定和使用路径优先原则不同,使用路径优先原则,是实实在在地将jar包给引入到pom文件中,而版本锁定只是规定了要使用的版本号,只有真实用到了相关的依赖,才生效。同时,版本锁定可以更集中地约束和规定依赖版本,这种优势是其他方法所不能达到的。
当然了,如果只是简单的小型项目,使用其他方式可能是更好的解决方法。
到此这篇关于maven解决依赖冲突的三种解决方法的文章就介绍到这了,更多相关maven依赖冲突解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
java实现在线预览--poi实现word、excel、ppt转html的方法
这篇文章主要介绍了java实现在线预览--poi实现word、excel、ppt转html的方法,本文需要引入poi的jar包给大家介绍的非常详细,需要的朋友可以参考下2019-09-09springboot版本升级以及解决springsecurity漏洞的问题
这篇文章主要介绍了springboot版本升级以及解决springsecurity漏洞的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08Java中FileOutputStream流的write方法
这篇文章主要为大家详细介绍了Java中FileOutputStream流的write方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-08-08es(elasticsearch)整合SpringCloud(SpringBoot)搭建教程详解
这篇文章主要介绍了es(elasticsearch)整合SpringCloud(SpringBoot)搭建教程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-06-06springboot +mybatis 使用PageHelper实现分页并带条件模糊查询功能
这篇文章主要介绍了springboot +mybatis 使用PageHelper实现分页并带条件模糊查询功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-02-02
最新评论