Maven依赖冲突的几种有效解决方法总结
一、问题描述
在项目开发中使用Maven管理Jar包时,常常会遇到Jar包依赖冲突。其根本原因是不同Jar包引用了同一Jar包的不同版本,从而在代码调用时,无法确定使用的是哪个版本的Jarba包。
二、解决办法
解决这一问题的方法有多种,按照思路分为总结如下:
1、第一声明原则
在pom.xml配置文件中,如果有两个名称相同,版本的不同依赖声明,先写的会生效,所以先声明自己要用的版本。这里的名称相同,版本不同的依赖声明,既可以是直接依赖,也可以是传递依赖。
例如,b引用了a的0.0.1版本,c引用了b的0.0.2版本,如果我们想用的版本是0.0.1版本,那么可以将b的版本依赖放在c的前面。
2、路径优先原则
直接依赖优于传递依赖。如果传递依赖的Jar包版本冲突了,那么可以单独声明一个指定版本的依赖Jar包,即可解决冲突。例如,b引用了a的0.0.1版本,c引用了b的0.0.2版本,如果我们想用的版本是0.0.3版本,可以直接单独声明一个a的0.0.3版本。
3、排除原则
在发生传递依赖冲突时,如果依赖不是项目需要的,可以在对应的传递依赖声明中进行排除。例如,b引用了a的0.0.1版本,c引用了b的0.0.2版本,如果我们想用的版本是0.0.2版本,那么可以将b的版本依赖中排除a。
<dependency> <groupId>com.test</groupId> <artifactId>b</artifactId> <version>b的版本号</version> <exclusions> <exclusion> <artifactId>com.test</artifactId> <groupId>a</groupId> </exclusion> </exclusions> </dependency>
到此这篇关于Maven依赖冲突的几种有效解决方法总结的文章就介绍到这了,更多相关Maven依赖冲突内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot如何监控Redis中某个Key的变化(自定义监听器)
这篇文章主要介绍了SpringBoot如何监控Redis中某个Key的变化(自定义监听器),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-09-09Sharding-JDBC自动实现MySQL读写分离的示例代码
本文主要介绍了Sharding-JDBC自动实现MySQL读写分离,优点在于数据源完全有Sharding-JDBC托管,写操作自动执行master库,读操作自动执行slave库,感兴趣的可以了解一下2021-11-11TransmittableThreadLocal线程间传递逻辑示例解析
这篇文章主要介绍了TransmittableThreadLocal线程间传递逻辑示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-06-06
最新评论