日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何解决Maven依赖冲突

發(fā)布時(shí)間:2023/12/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何解决Maven依赖冲突 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Java常見包沖突異常:

AbstractMethodError
NoClassDefFoundError
ClassNotFoundException
LinkageError

二、沖突分析

像上圖,就發(fā)生了包引用沖突,如果C包v0.1版本在前,JVM加載過v0.1版本里的同名類后就不會(huì)加載v0.2里的同名類,這很可能造成丟失了v0.2里同類里新增的方法屬性等等。

接下來我們看看Maven對(duì)這種情況是如何進(jìn)行管理的。

Maven 對(duì) pom 文件的傳遞性依賴自動(dòng)進(jìn)行管理, 其中有一個(gè)原則 絕對(duì)不允許最終的classpath出現(xiàn)同名不同版本的jar包 。

Maven會(huì)根據(jù)pom文件中的groupId、artifactId、version來判斷jar是否沖突,這就是規(guī)范約定的好處之一。

如果出現(xiàn)了同名不同版本的jar包,Maven的處理原則是 離你項(xiàng)目更近的jar包會(huì)被選中,其他的淘汰 , 這句話什么意思呢 請看下圖:

C包V0.2勝出,因?yàn)樗x我們的項(xiàng)目更近,看圖應(yīng)該就感覺很直觀啦,

最終的classpath就是 A包、B包、D包、C包v0.2, Maven將C包v0.1排除掉啦。

三、處理沖突

1、下載Idea插件 Maven Helper

File–>setting—>Plugins—>在搜索框中填寫Maven Helper然后搜索,單擊Install按鈕進(jìn)行安裝,裝完重啟IDE。
當(dāng)Maven Helper 插件安裝成功后,打開項(xiàng)目中的pom文件,下面就會(huì)多出一個(gè)視圖Dependency Analyzer:

切換到此試圖即可進(jìn)行相應(yīng)操作:
Conflicts(查看沖突)
All Dependencies as List(列表形式查看所有依賴)
All Dependencies as Tree(樹形式查看所有依賴)

當(dāng)前界面上還提供搜索功能,方便使用。

切換到maven 依賴視圖選擇沖突選項(xiàng),如果有沖突,在左下面區(qū)域會(huì)有紅色顯示。

2、解決沖突:

方法1:更換兼容版本
方法2:右鍵單擊紅色區(qū)域,彈出菜單選擇Exclude命令,對(duì)沖突進(jìn)行排除。

總結(jié)

以上是生活随笔為你收集整理的如何解决Maven依赖冲突的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。