maven 解决冲突

1.Maven之jar包冲突解决(理解maven 产生冲突的缘由)html

致使jar包冲突的缘由
一、mvn的传递依赖特性:mvn编译打包除了会引入直接申明的依赖,还会引入间接申明的依赖eclipse

二、mvn的依赖仲裁规则:maven

    1). 按照项目总控POM的DependencyManager版本声明进行仲裁。post

    2). 如无仲裁声明,则按照依赖最短路径肯定版本。单元测试

    3). 若相同路径,有严格区间限定的版本优先。测试

    4). 若相同路径,无版本区间,则按照先入为主原则。url

https://blog.csdn.net/qq_32600229/article/details/79208351spa

2.eclipse  maven排查jar包版本冲突.net

场景描述
有时候在pom中引入了新的jar包,因为maven会根据传递依赖,将该jar包依赖的其余jar包自动下载。所以,自动下载的jar包和已存在的jar包可能存在相同的jar包,可是版本不一致。此处就形成了冲突插件

排查方法
一、在命令行中,跳转到项目路径。
二、先清除,再从新安装:mvn clean install. 若是不想运行单元测试类,则运行命令:mvn -Dmaven.test.skip=true clean install 
三、查询依赖关系,并导入到名为tree.txt的文件中:mvn dependency:tree -Dverbose > tree.txt 
四、在tree.txt文件中搜索:conflict。若是存在,则有冲突jar包,需肯定jar包版本,把不须要的jar包版本排除。

下图为tree.txt中存在冲突的jar包样例

æ件å®ä¾

补充:

eclipse  首先点击demo 项目 而后使用  ctrl +alt +t 打开eclipse cmd 窗口入下图:直接跳入到demo 本地目录中了。而后在以前上面提供的命令;

https://blog.csdn.net/cchengone/article/details/78295269?locationNum=5&fps=1 

补充:https://www.jianshu.com/p/bbd5b0abcad1--命令方式建议参考

 

maven 检查依赖冲突和版本冲突

在项目发布的时候,通常都须要进行依赖冲突检查或者重复类的检查,这个时候我通常会使用下面的两个命令:

1

2

3

mvn -U clean package -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true -Denforcer.skip=false

 

mvn -U dependency:tree -Dverbose

dependency: tree是检查版本冲突的

enforcer:enforce是用来检查重复类的

简单地用 dependency:tree每每并不能查看到全部的传递依赖。不过若是你真的想要看全部的,必须得加一个 -Dverbose参数,这时就一定是最全的了。

全是全了,但显示出来的东西太多有时候会很烦,加上 Dincludes或者 Dexcludes,就会包含或者排除你指定的依赖了, dependency:tree就会帮你过滤出来:好比:

mvn dependency:tree -Dverbose -Dincludes=asm:asm 就会出来asm依赖包的分析信息。

https://www.cnblogs.com/adolfmc/p/6069983.html

3.Maven Idea查看解决jar包冲突

https://www.jianshu.com/p/a8a77d6262ed

4.Maven中 jar包冲突原理与解决办法(maven helper 插件)

http://www.noobyard.com/article/p-wvaxzkgt-mu.html