maven helper jar包冲突的几种解决方法
作者:健康平安的活着
一 概要说明
1.1 说明
首先,解决idea中jar包冲突,使用maven的插件:maven helper插件,它能够给我们罗列出来同一个jar包的不同版本,以及他们的来源,但是对不同jar包中同名的类没有办法。
1.2 依赖顺序
从图中可以看出有哪些jar存在冲突,存在冲突的情况下最终采用了哪个依赖的版本。标红的就是冲突版本,白色的是当前的解析版本。
1.3 解决思路
方案1:在依赖中排除掉冲突版本的依赖。使用 exclusion 排除定位到的冲突包。
方案2: 显示单独声明使用依赖的版本
方案3: 方案1+方案2 ,先排除,后声明指定的版本。
方案4:锁定版本,我们最常使用的解决方式,是使用dependencyManagement统一对依赖的版本进行定义。这样的话,导入依赖的时候就会直接使用我们锁定的依赖版本。
这里要注意两点,版本锁定和使用路径优先原则不同,使用路径优先原则,是实实在在地将jar包给引入到pom文件中,而版本锁定只是规定了要使用的版本号,只有真实用到了相关的依赖,才生效。同时,版本锁定可以更集中地约束和规定依赖版本,这种优势是其他方法所不能达到的。
当然了,如果只是简单的小型项目,使用其他方式可能是更好的解决方法。
https://www.jb51.net/program/318190efu.htm
二 案例说明1
2.1 解析说明
1.冲突概貌
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>6.0.9</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.3.23</version> </dependency>
2.说明
1.spring-webmvc-6.0.9 依赖于spring-aop-5.2.8
2.spring-webmvc-6.0.9 依赖于spring-context-5.2.8,springcontext-5.2.8 依赖于spring-aop-5.3.23
冲突出现:spring-aop-5.2.8与spring-aop-5.3.23
冲突出现:spring-aop-5.2.8与spring-aop-5.3.23
2.2 解决办法
1.spring-webmvc-6.0.9 排除掉:spring-aop-5.2.8
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>6.0.9</version> <exclusions> <exclusion> <artifactId>spring-aop</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency>
2.starter-web排除掉 spirngwebmvc-5.2.8,然后声明6.0.9版本。
3.刷新pom,重新拉包,如图
三 案例说明2
3.1 冲突截图
3.2 截图办法
在父工程中的pom文件中声明冲突依赖的具体版本。如图,这里指定
dpsn-appas-oltp-plugin-api的版本为1.0.0
四 案例说明3 锁定版本
4.1 冲突截图
锁定版本,我们最常使用的解决方式,是使用dependencyManagement统一对依赖的版本进行定义。这样的话,导入依赖的时候就会直接使用我们锁定的依赖版本。
这里在父工程的pom里面<dependecyManagement>中的<dependencies>标签中,指定使用版本
<dependency> <groupId>com.pab.dpscn</groupId> <artifactId>corebankpulltest-message</artifactId> <version>1.0.0-dev-test-SNAPSHOT</version> </dependency>
详情见下图
4.2 案例2
2.解决办法
到此这篇关于maven helper jar包冲突的几种解决方法的文章就介绍到这了,更多相关maven helper jar包冲突 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!