你好,歡迎進(jìn)入江蘇優(yōu)軟數(shù)字科技有限公司官網(wǎng)!
發(fā)布時(shí)間:2023-08-02
瀏覽次數(shù):0
點(diǎn)擊“結(jié)束代碼生命”,關(guān)注并關(guān)注公眾號(hào)
每日技術(shù)干貨,第一時(shí)間送達(dá)!
什么是依賴沖突
Maven是一個(gè)非常有用的依賴管理工具,即使是最好的東西也不是完美的。 Maven的依賴機(jī)制會(huì)導(dǎo)致Jar包沖突。 比如現(xiàn)在你的項(xiàng)目中使用了兩個(gè)Jar包,分別是A和B?,F(xiàn)在A需要依賴另一個(gè)Jar包C,B也需要依賴C。而A依賴的C的版本是1.0, B所依賴的C版本為2.0。 這時(shí),Maven會(huì)將1.0 C和2.0 C都下載到你的項(xiàng)目中,這樣你的項(xiàng)目中就有了不同版本的C。 這時(shí),Maven會(huì)按照依賴路徑最短的原則決定使用那個(gè)版本的Jar包,而另一個(gè)無(wú)用的Jar包則不使用,這就是所謂的依賴沖突。
大多數(shù)時(shí)候,依賴沖突可能不會(huì)導(dǎo)致系統(tǒng)出現(xiàn)任何異常,因?yàn)镸aven仍然選擇使用Jar包。 而且,不排除在某些特定情況下,會(huì)出現(xiàn)類(lèi)似于找不到類(lèi)的異常情況。 因此,只要存在依賴沖突,在我看來(lái),最好解決掉,不要給系統(tǒng)留下隱患。
解決方案
解決依賴沖突的方法是使用Maven提供的標(biāo)簽。 標(biāo)簽必須放在標(biāo)簽內(nèi)部,如下圖:
<dependency>
????<groupId>org.apache.logging.log4jgroupId>
????<artifactId>log4j-coreartifactId>
????<version>2.10.0version>
????<exclusions>
????????<exclusion>
????????<artifactId>log4j-apiartifactId>
????????<groupId>org.apache.logging.log4jgroupId>
????????exclusion>
????exclusions>
dependency>
log4j-core本身依賴于log4j-api,并且由于其他一些模塊也依賴于log4j-api,但是兩個(gè)log4j-api版本不同,所以我們使用標(biāo)簽來(lái)排除log4j-core依賴的log4j-api,在這樣,Maven就不會(huì)下載log4j-core所依賴的log4j-apiintellij idea找不到圖標(biāo),這就保證了我們的項(xiàng)目中只有一個(gè)版本的log4j-api。
梅文
聽(tīng)到這里,你可能會(huì)有疑問(wèn)。 如何知道我的項(xiàng)目中哪些依賴的Jar包有沖突? Maven這個(gè)IDEA插件幫我們解決了這個(gè)問(wèn)題。 插件的安裝方法我就不說(shuō)了。 既然你了解了Maven,相信你也可以安裝插件。
插件安裝完后,我們打開(kāi)pom.xml文件,頂部會(huì)多一個(gè)選項(xiàng)
點(diǎn)擊這個(gè)選項(xiàng)
找到?jīng)_突的,右鍵,然后選擇排除沖突版本的Jar包。
小方法
不僅僅使用Maven查看依賴沖突,還可以使用IDEA提供的方法——Maven依賴燈,打開(kāi)Maven窗口,選擇,然后點(diǎn)擊圖標(biāo)(Show)或者使用快捷鍵(Ctrl+Alt +Shift+U) ,可以打開(kāi)Maven依賴節(jié)點(diǎn)配置燈
圖中,我們可以看到一些白色虛線,紫色虛線是依賴沖突intellij idea找不到圖標(biāo),紅色虛線是正常依賴。
來(lái)源:.com/a/42396
PS:為了避免找不到這篇文章,可以收藏、點(diǎn)贊,方便瀏覽和搜索。
過(guò)去的推薦
如有侵權(quán)請(qǐng)聯(lián)系刪除!
Copyright ? 2023 江蘇優(yōu)軟數(shù)字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服務(wù)提供商
13262879759
微信二維碼