Maven版本沖突的三種解決方法
一、依賴傳遞
Jar包沖突一般都和依賴傳遞原則有關(guān)。
1、最短路徑優(yōu)先原則:
假如引入了兩個(gè)Jar包A、B,都依賴Z這個(gè)Jar包,
A -> Y -> X -> Z(2.5)
B -> X -> Z(2.0)
那么最終生效的是Z(2.0)版本。
2、最先聲明優(yōu)先原則
如果路徑長(zhǎng)短一樣,優(yōu)先選擇先聲明的那個(gè),
A -> Z(3.0)
B -> Z(3.5)
這里A最先聲明,所以依賴Z(3.0)。
注意:
1、當(dāng)出現(xiàn)jar包沖突時(shí),一般建議采用高版本的jar包,因?yàn)楦甙姹镜膉ar在設(shè)計(jì)時(shí)一般會(huì)考慮向下兼容。只有高版本Jar包不向下兼容才有可能導(dǎo)致這樣的問(wèn)題。
2、Maven 加載Jar包的優(yōu)先級(jí)順序:項(xiàng)目子Module對(duì)應(yīng)的Jar包 > 本地倉(cāng)庫(kù)Jar包 > 遠(yuǎn)程倉(cāng)庫(kù)的Jar包
二、如何解決?
1、依賴排除exclusions:將沖突的依賴排除

2、版本鎖定
一般在項(xiàng)目中會(huì)有多個(gè)Module,每一個(gè)module都會(huì)有很多外部依賴,而多種依賴可能都依賴了jar包Y,就涉及到了多個(gè)版本,如果用排除法的話,需要一個(gè)一個(gè)的進(jìn)行exclusion,過(guò)于繁瑣。所以一般在父級(jí)pom標(biāo)明版本,則這樣對(duì)于jar包的依賴就只會(huì)保留4.1.2這個(gè)版本了。值得注意的是ependencyManagement標(biāo)簽只能做依賴仲裁管理使用,他并不會(huì)引入對(duì)Jar包的依賴。

3、使用maven-shade-plugin插件
參考:解決項(xiàng)目版本沖突——maven-shade插件使用
到此這篇關(guān)于Maven版本沖突的三種解決方法的文章就介紹到這了,更多相關(guān)Maven版本沖突內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot使用異步請(qǐng)求提高系統(tǒng)的吞吐量詳解
這篇文章主要介紹了Springboot使用異步請(qǐng)求提高系統(tǒng)的吞吐量詳解,和同步請(qǐng)求相對(duì),異步不需要等待響應(yīng),隨時(shí)可以發(fā)送下一次請(qǐng)求,如果是同步請(qǐng)求,需要將信息填寫完整,再發(fā)送請(qǐng)求,服務(wù)器響應(yīng)填寫是否正確,再做修改,需要的朋友可以參考下2023-08-08
AQS加鎖機(jī)制Synchronized相似點(diǎn)詳解
這篇文章主要為大家介紹了AQS加鎖機(jī)制Synchronized相似點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
java從字符串中提取數(shù)字的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇java從字符串中提取數(shù)字的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
Java之判斷2000~2023年有哪些年份是閏年并打印輸出
這篇文章主要介紹了Java之判斷2000~2023年有哪些年份是閏年并打印輸出,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
SpringBoot如何統(tǒng)一處理返回結(jié)果和異常情況
這篇文章主要介紹了SpringBoot如何統(tǒng)一處理返回結(jié)果和異常情況問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
使用maven運(yùn)行Java Main的三種方法解析
這篇文章主要介紹了使用maven運(yùn)行Java Main的三種方式的相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10

