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

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

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

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

依賴沖突有很多,其實(shí)這里面的依賴沖突就是不同的依賴引用了不同的版本jar包,但是很多是沒有影響的,這里面差生影響的就是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)存在的依賴,這就說明隨著screw-corey依賴的引入,導(dǎo)入了2.11.2版本的log4j,進(jìn)而導(dǎo)致依賴沖突,然而在screw-core的依賴引入中沒有看到,就說明是他的下一層架依賴引入或者多層級(jí)依賴引入導(dǎo)致的問題。這時(shí)候我采用了排除法,對(duì)screw-core中類似log4j的依賴逐個(gè)排除

排除掉log4j依賴,問題解決
回顧
對(duì)于maven-helper的idea插件,在市面上是比較火的,但是使用起來并沒有達(dá)到我理想中的期望,比如直接找到?jīng)_突的依賴,直接排除掉,看了些網(wǎng)上的教程,對(duì)于簡(jiǎn)單的以來沖突maven-helper可以較快的定位到,但是對(duì)于向我遇到的問題,還是需要慢慢的去排查,總之問題解決了,也算是很有收獲。
到此這篇關(guān)于解決Maven依賴沖突的方法的文章就介紹到這了,更多相關(guān)Maven依賴沖突內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯
Log4j?是Apache為Java提供的日志管理工具。他與System.out.println()的作用相似,用來跟蹤、調(diào)試、維護(hù)程序。這篇文章主要介紹了關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯,需要的朋友可以參考下2021-12-12
springboot 實(shí)現(xiàn)記錄業(yè)務(wù)日志和異常業(yè)務(wù)日志的操作
這篇文章主要介紹了springboot 實(shí)現(xiàn)記錄業(yè)務(wù)日志和異常業(yè)務(wù)日志的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
JavaMail實(shí)現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細(xì)介紹了JavaMail實(shí)現(xiàn)發(fā)送郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送功能
郵件發(fā)送是一個(gè)很普遍的功能,springboot整合了相關(guān)的starter,本文給大家介紹了可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的郵件發(fā)送功能的實(shí)例,文中通過代碼給大家介紹的非常詳細(xì),感興趣的朋友可以參考下2023-12-12
SpringBoot實(shí)現(xiàn)跨域的幾種常用方式總結(jié)
跨域是指一個(gè)域下的文檔或腳本試圖去請(qǐng)求另一個(gè)域下的資源,或者涉及到兩個(gè)不同域名的資源之間的交互,由于同源策略(Same Origin Policy)的限制,瀏覽器不允許跨域請(qǐng)求,本文小編給大家分享了SpringBoot實(shí)現(xiàn)跨域的幾種常用方式,需要的朋友可以參考下2023-09-09
Mybatis-plus使用selectList查詢數(shù)據(jù)為null的問題及解決辦法
這篇文章主要介紹了Mybatis-plus使用selectList查詢數(shù)據(jù)為null的問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
SpringBoot @Schedule的使用注意與原理分析
這篇文章主要介紹了SpringBoot @Schedule的使用注意與原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
在logback.xml中自定義動(dòng)態(tài)屬性的方法
這篇文章主要介紹了在logback.xml中自定義動(dòng)態(tài)屬性的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
Spring Boot項(xiàng)目中結(jié)合MyBatis實(shí)現(xiàn)MySQL的自動(dòng)主從切換功能
這篇文章主要介紹了Spring Boot項(xiàng)目中結(jié)合MyBatis實(shí)現(xiàn)MySQL的自動(dòng)主從切換功能,本文分步驟給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-04-04
Java 如何快速實(shí)現(xiàn)一個(gè)連接池
有沒有一個(gè)通用的庫可以快速實(shí)現(xiàn)一個(gè)線程池呢?得益于 Java 完善的生態(tài),前人們針對(duì)這種需要開發(fā)了一個(gè)通用庫:Apache Commons Pool(下文簡(jiǎn)稱 ACP)。本質(zhì)上來說,ACP 庫提供的是管理對(duì)象池的通用能力,當(dāng)然也可以用來管理連接池了!2021-05-05

