解決Maven依賴沖突的方法
背景
在項(xiàng)目中screw-core依賴時(shí)發(fā)生了沖突,控制臺(tái)指出是log4j產(chǎn)生的依賴沖突,導(dǎo)致程序報(bào)錯(cuò)無(wú)法運(yùn)行,是一個(gè)典型的maven依賴沖突,基于這個(gè)問(wèn)題進(jìn)行
處理
處理首先查看控制臺(tái)報(bào)錯(cuò)日志

基于這個(gè)報(bào)錯(cuò)在pom依賴中查看一下

screw-corey依賴是這次新增加的依賴,也就是說(shuō)依賴沖突是由于screw-core依賴和原有的依賴產(chǎn)生了沖突,具體是哪個(gè)依賴,我們打開(kāi)screw-core依賴進(jìn)行查看他的依賴,奇怪的是并沒(méi)有看到screw-core中存在log4j的引用,這時(shí)候想到一個(gè)idea的插件 maven-helper
maven-helper這個(gè)插件是專門(mén)幫助我們解決maven依賴沖突的插件,使用時(shí)可以看到具體的依賴沖突是哪些依賴,我進(jìn)行了安裝使用

首先進(jìn)入pom文件,安裝插件后會(huì)看到左下角有一個(gè)Dependency Analyzer按鈕,點(diǎn)擊一下,我們可以看到依賴沖突

依賴沖突有很多,其實(shí)這里面的依賴沖突就是不同的依賴引用了不同的版本jar包,但是很多是沒(méi)有影響的,這里面差生影響的就是log4j-api,我們看到項(xiàng)目中有兩個(gè)版本,一個(gè)是2.17.0,一個(gè)是2.11.2

點(diǎn)擊2.17.0jump to source 可以看到他的引用,根據(jù)pom發(fā)現(xiàn)他是在引入screw-core之前就已經(jīng)存在的依賴,這就說(shuō)明隨著screw-corey依賴的引入,導(dǎo)入了2.11.2版本的log4j,進(jìn)而導(dǎo)致依賴沖突,然而在screw-core的依賴引入中沒(méi)有看到,就說(shuō)明是他的下一層架依賴引入或者多層級(jí)依賴引入導(dǎo)致的問(wèn)題。這時(shí)候我采用了排除法,對(duì)screw-core中類似log4j的依賴逐個(gè)排除

排除掉log4j依賴,問(wèn)題解決
回顧
對(duì)于maven-helper的idea插件,在市面上是比較火的,但是使用起來(lái)并沒(méi)有達(dá)到我理想中的期望,比如直接找到?jīng)_突的依賴,直接排除掉,看了些網(wǎng)上的教程,對(duì)于簡(jiǎn)單的以來(lái)沖突maven-helper可以較快的定位到,但是對(duì)于向我遇到的問(wèn)題,還是需要慢慢的去排查,總之問(wèn)題解決了,也算是很有收獲。
到此這篇關(guān)于解決Maven依賴沖突的方法的文章就介紹到這了,更多相關(guān)Maven依賴沖突內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
maven項(xiàng)目test執(zhí)行main找不到資源文件的問(wèn)題及解決
這篇文章主要介紹了maven項(xiàng)目test執(zhí)行main找不到資源文件的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
MyBatis中<collection>標(biāo)簽的多種用法
collection標(biāo)簽是處理一對(duì)多關(guān)系的關(guān)鍵工具,它能夠?qū)⒉樵兘Y(jié)果巧妙地映射到Java對(duì)象的集合屬性中,本文主要介紹了MyBatis中<collection>標(biāo)簽的多種用法,感興趣的可以了解一下2025-04-04
責(zé)任鏈模式在spring security過(guò)濾器鏈中的應(yīng)用小結(jié)
責(zé)任鏈模式在SpringSecurity過(guò)濾器鏈中的應(yīng)用,通過(guò)一系列的過(guò)濾器按順序處理請(qǐng)求,每個(gè)過(guò)濾器負(fù)責(zé)特定的安全功能,實(shí)現(xiàn)靈活且可擴(kuò)展的請(qǐng)求處理機(jī)制,感興趣的朋友跟隨小編一起看看吧2024-11-11
SpringBoot基于注解實(shí)現(xiàn)數(shù)據(jù)庫(kù)字段回填的完整方案
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何基于注解實(shí)現(xiàn)數(shù)據(jù)庫(kù)字段回填的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解2025-11-11
Java進(jìn)階之高并發(fā)核心Selector詳解
前幾篇文章介紹了Java高并發(fā)的一些基礎(chǔ)內(nèi)容,認(rèn)識(shí)了Channel,Buffer和Selector的基本用法,有了感性認(rèn)識(shí)之后,來(lái)看看Selector的底層是如何實(shí)現(xiàn)的。,需要的朋友可以參考下2021-05-05
實(shí)例講解Java中random.nextInt()與Math.random()的基礎(chǔ)用法
今天小編就為大家分享一篇關(guān)于實(shí)例講解Java中random.nextInt()與Math.random()的基礎(chǔ)用法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02
JAVA中重寫(xiě)(Override)與重載(Overload)的相關(guān)示例
這篇文章主要給大家介紹了關(guān)于JAVA中重寫(xiě)(Override)與重載(Overload)的相關(guān)示例,重寫(xiě)(override)和重載(overload)是兩種不同的方法重用技術(shù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
基于SSM框架實(shí)現(xiàn)簡(jiǎn)單的登錄注冊(cè)的示例代碼
這篇文章主要介紹了基于SSM框架實(shí)現(xiàn)簡(jiǎn)單的登錄注冊(cè)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
springboot+quartz以持久化的方式實(shí)現(xiàn)定時(shí)任務(wù)的代碼
這篇文章主要介紹了springboot+quartz以持久化的方式實(shí)現(xiàn)定時(shí)任務(wù)的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07

