Maven?Pom?文件中的隱式依賴導(dǎo)致Jar沖突問題
在maven項(xiàng)目中遇到這樣一個(gè)場景
- 項(xiàng)目中的pom文件中,依賴了Spring-core,而Spring-core又隱式的依賴了commons-logging。
- 項(xiàng)目中同時(shí)配置了對(duì)定時(shí)任務(wù)quartz 包的依賴,而quartz又隱式依賴了slf4j。
這樣項(xiàng)目中既有了commons-logging又有了slf4j。導(dǎo)致在log4j.properties里配置的mybatis的sql顯示配置,一直沒起作用,直到我查看maven dependencie中的jar包時(shí),才發(fā)現(xiàn)項(xiàng)目既依賴了common-logging又引入了slf4j。后來通過排除quartz中的slf4j的依賴
解決了上述沖突的問題
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency>
以后該如何解決這種類似的問題呢。eclipse提供了對(duì)隱式依賴jar包的查看功能:在eclipse中打開一個(gè)pom文件,在Dependency Hierarchy的Tab頁中,就可以查看當(dāng)前pom文件中顯示聲明的jar包,及這些顯示聲明的jar中隱式引入的依賴jar包。

這樣就可以查看有哪些隱式的依賴jar會(huì)導(dǎo)致jar包沖突了。
Maven 查看jar包依賴關(guān)系
使用eclipse操作,在項(xiàng)目中打開pom.xml文件進(jìn)入Dependency Hierarchy 來查看依賴樹

Dependency hierarchy:依賴層次視圖
Resolved dependencies:依賴關(guān)系解析
點(diǎn)擊右邊jar或者搜索需要查找的jar可以在左邊找到對(duì)應(yīng)關(guān)系
比如在NewEnergyCheckDemo項(xiàng)目中啟動(dòng)springBoot工程控制臺(tái)不打印錯(cuò)誤信息,那一定是某個(gè)日志jar包有沖突導(dǎo)致的,我們就可以直接搜索要查找的jar,我們可以看到在pom.xml文件中依賴了

而Commons-vfs2這個(gè)jar包中又隱式依賴了commons-logging
在項(xiàng)目中我們又配置了spring-boot-starter-web的依賴

我們可以看到該jar包又隱式依賴了一些其他的jar包,如spring-boot-starter又包含了spring-boot-starter-logging,該依賴的內(nèi)容就是springBoot默認(rèn)的日志框架logback,所以我們?cè)谑褂胹pringBoot的日志框架時(shí)應(yīng)該先排除commons-vfs2中commons-logging該jar包的依賴.
排除jar包依賴,找到需要排除的jar包點(diǎn)擊右鍵如下圖

排除依賴之后的pom.xml坐標(biāo)如下

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Batch遠(yuǎn)程分區(qū)的本地Jar包模式的代碼詳解
這篇文章主要介紹了Spring Batch遠(yuǎn)程分區(qū)的本地Jar包模式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Java實(shí)現(xiàn)基于token認(rèn)證的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)基于token認(rèn)證的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
IDEA創(chuàng)建Java Web項(xiàng)目不能及時(shí)刷新HTML或JSP頁面問題
這篇文章主要介紹了IDEA創(chuàng)建Java Web項(xiàng)目不能及時(shí)刷新HTML或JSP頁面問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
使用spring通過aop獲取方法參數(shù)和參數(shù)值
這篇文章主要介紹了使用spring通過aop獲取方法參數(shù)和參數(shù)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
SpringBoot后端接收參數(shù)優(yōu)化代碼示例(統(tǒng)一處理前端參數(shù))
使用Spring Boot開發(fā)API的時(shí)候,讀取請(qǐng)求參數(shù)是服務(wù)端編碼中最基本的一項(xiàng)操作,下面這篇文章主要給大家介紹了關(guān)于SpringBoot后端接收參數(shù)優(yōu)化(統(tǒng)一處理前端參數(shù))的相關(guān)資料,需要的朋友可以參考下2024-07-07
Java大數(shù)據(jù)處理的核心技術(shù)MapReduce框架
MapReduce是一種分布式計(jì)算框架,適用于大規(guī)模的數(shù)據(jù)處理。它將大數(shù)據(jù)分成多個(gè)小數(shù)據(jù)塊,通過Map和Reduce兩個(gè)階段對(duì)數(shù)據(jù)進(jìn)行處理和分析。MapReduce框架具有可靠、高效、可擴(kuò)展等特點(diǎn),已經(jīng)成為大數(shù)據(jù)處理的核心技術(shù)2023-05-05
Spring事件監(jiān)聽機(jī)制之@EventListener實(shí)現(xiàn)方式詳解
這篇文章主要介紹了Spring事件監(jiān)聽機(jī)制之@EventListener實(shí)現(xiàn)方式詳解,ApplicationContext的refresh方法還是初始化了SimpleApplicationEventMulticaster,發(fā)送事件式還是先獲取ResolvableType類型,再獲取發(fā)送監(jiān)聽列表,需要的朋友可以參考下2023-12-12

