maven 解决冲突
1.Maven之jar包沖突解決(理解maven 產生沖突的原因)
導致jar包沖突的原因
1、mvn的傳遞依賴特性:mvn編譯打包除了會引入直接申明的依賴,還會引入間接申明的依賴
2、mvn的依賴仲裁規則:
????1). 按照項目總控POM的DependencyManager版本聲明進行仲裁。
????2). 如無仲裁聲明,則按照依賴最短路徑確定版本。
????3). 若相同路徑,有嚴格區間限定的版本優先。
????4). 若相同路徑,無版本區間,則按照先入為主原則。
https://blog.csdn.net/qq_32600229/article/details/79208351
2.eclipse? maven排查jar包版本沖突
場景描述
有時候在pom中引入了新的jar包,由于maven會根據傳遞依賴,將該jar包依賴的其他jar包自動下載。因此,自動下載的jar包和已存在的jar包可能存在相同的jar包,但是版本不一致。此處就造成了沖突
排查方法
1、在命令行中,跳轉到項目路徑。
2、先清除,再重新安裝:mvn clean install. 如果不想運行單元測試類,則運行命令:mvn -Dmaven.test.skip=true clean install?
3、查詢依賴關系,并導入到名為tree.txt的文件中:mvn dependency:tree -Dverbose > tree.txt?
4、在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 插件)
https://blog.csdn.net/noaman_wgs/article/details/81137893
總結
以上是生活随笔為你收集整理的maven 解决冲突的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取知乎live_Pytho
- 下一篇: Java的帮助文档