如何使用maven-helper插件解决jar包冲突问题
作者:健康平安的活着
一 mavenHelper插件的介绍安装
1.1 介绍
安装了Maven Helper插件,只要打开pom文件,就可以打开该pom文件的Dependency Analyzer视图(在文件打开之后,文件下面会多出这样一个tab),进入Dependency Analyzer视图之后有三个查看选项,分别是Conflicts(冲突)、All Dependencies as List(列表形式查看所有依赖)、All Dependencies as Tree(树结构查看所有依赖)。并且这个页面还支持搜索。很方便!
1.2 安装
1.在线安装:File-->setting--->Plugins--->在搜索框中填写Maven Helper然后搜索,单击Install按钮进行安装,装完重启IDE。
2.离线安装:点击“Plugins”->“Marketplace”->输入"mavn helper"->点击“install”->点击“OK”完成安装
1.3 helper的使用
1.当Maven Helper 插件安装成功后,打开项目中的pom文件,下面就会多出一个试图
2.helper的界面
打开pom文件,并可以切换tab,简单使用,如下图:
Conflicts(查看冲突)
All Dependencies as List(列表形式查看所有依赖)
All Dependencies as Tree(树形式查看所有依赖)
当前界面上还提供搜索功能 方便使用
二 jar包冲突说明
2.1 说明
首先,解决idea中jar包冲突,使用maven的插件:maven helper插件,它能够给我们罗列出来同一个jar包的不同版本,以及他们的来源,但是对不同jar包中同名的类没有办法。
2.2 依赖顺序
1.点击【All Dependencies as Tree】,查看:从上向下,A依赖于B,B依赖于C;starter依赖core,core依赖api
2.点击【Conflicts】,从图中可以看出有哪些jar存在冲突,存在冲突的情况下最终采用了哪个依赖的版本。标红的就是冲突版本,白色的是当前的解析版本。这个选项,需要从下向上看;
A依赖于B,B依赖于C,如下图:冲突的jar包就是dpscn-apass-oltp-plugin-api
2.3 解决思路
2.3.1 *排除指定的版本*
思想:如果有两个依赖的版本发生了冲突,那么只要把其中一个依赖给排除掉,只剩下一个依赖,那么自然就可以解决冲突的问题。我们只需要使用exclusion关键字对相关依赖进行排除就行
1.这里可以看到 spirng-beans-4.2.4.release和spring-beans-5.0.12冲突,这里舍弃spirng-beans-4.2.4.release这个版本,保留spring-beans-5.0.12 这个版本。使用 exclusion 排除定位到的冲突包。
2.在4.2.4版本侧选中【exclude】
3.查看pom依赖,刷新pom后
4.再次点击【conflicts】,可以看到关于spring-beans的冲突已经没有,现在使用的是spring-beans-5.0.12这个版本
2.3.2 子工程显示指定版本
显示单独声明使用依赖的版本
2.3.3 子工程中先排除,后指定版本
如下图,在starter-web中排除spring-webmvc,然后指定spring-webmvc的版本为6.0.9。
2.3.4 锁定版本
方案4:锁定版本,我们最常使用的解决方式,是使用dependencyManagement统一对依赖的版本进行定义。这样的话,导入依赖的时候就会直接使用我们锁定的依赖版本。
这里要注意两点,版本锁定和【使用路径优先原则不同,使用路径优先原则,是实实在在地将jar包给引入到pom文件中】,而版本锁定只是规定了要使用的版本号,只有真实用到了相关的依赖,才生效。同时,版本锁定可以更集中地约束和规定依赖版本,这种优势是其他方法所不能达到的。
当然了,如果只是简单的小型项目,使用其他方式可能是更好的解决方法。
https://www.jb51.net/program/318190efu.htm
三 案例
排除指定版本
3.1 冲突说明
1.冲突依赖描述
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.4.RELEASE</version> <exclusions> <exclusion> <artifactId>spring-beans</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.0.12.RELEASE</version> </dependency>
2.说明:从下向上看
spring-aop 版本5.0.12版本
spring-webmvc4.2.4 依赖于spring-web 4.2.4 ,spring-web-4.2.4依赖于spring-aop4.2.4 版本
冲突版本:spring-aop:5.0.12 和spring-aop4.2.4 冲突
3.2 解决方法
排除掉spring-aop4.2.4这个版本,保留spring-aop:5.0.12 这个版本
查看maven坐标:在4.2.4-spirng-webmvc排除掉spring-aop4.2.4版本,刷新pom,重新拉包,如图
4.查看冲突已解决:再次点击【conflicts】查看aop的冲突已经没有了
四 案例:子工程指定具体版本
4.1 冲突说明
4.2 排除方法
在父工程中的pom文件中声明冲突依赖的具体版本。如图,这里指定:dpsn-appas-oltp-plugin-api的版本为1.0.0
五 案例 锁定版本*
5.1 冲突说明
锁定版本,我们最常使用的解决方式,是使用dependencyManagement统一对依赖的版本进行定义。这样的话,导入依赖的时候就会直接使用我们锁定的依赖版本。
这里在父工程的pom里面<dependecyManagement>中的<dependencies>标签中,指定使用版本
<dependency> <groupId>com.pab.dpscn</groupId> <artifactId>corebankpulltest-message</artifactId> <version>1.0.0-dev-test-SNAPSHOT</version> </dependency>
详情见下图
5.2 解决方法
1.这里查看依赖要从上向下看:可以看到:
Clearingledger-ledger-1.0.0-snapshot依赖于Clearingledger-ledger-facade-1.0.0-snapshot
Clearingledger-ledger-facade-1.0.0-snapshot依赖于corebankpulltest-message-1.0.0-dev-snapshot
冲突版本为:corebankpulltest-message-1.0.0-dev-snapshot和corebankpulltest-message-1.0.0-dev-test-snapshot版本
2.解决办法:在父工程的dependencyManagement标签中锁定版本使用corebankpulltest-message:1.0.0-dev-test-snapshot版本
到此这篇关于使用maven-helper插件解决jar包冲突的文章就介绍到这了,更多相关maven-helper插件解决jar包冲突内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- idea中maven使用tomcat7插件运行run报错Could not start Tomcat问题
- SpringBoot Maven打包插件spring-boot-maven-plugin无法解析原因
- SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代码
- maven插件maven-assembly-plugin打包归纳文件zip/tar使用
- maven插件maven-jar-plugin构建jar文件的详细使用
- Spring Boot的Maven插件Spring Boot Maven plugin详解
- Maven插件之Dependency:analyze的使用