Maven?Pom?文件中的隱式依賴導(dǎo)致Jar沖突問題
在maven項目中遇到這樣一個場景
- 項目中的pom文件中,依賴了Spring-core,而Spring-core又隱式的依賴了commons-logging。
- 項目中同時配置了對定時任務(wù)quartz 包的依賴,而quartz又隱式依賴了slf4j。
這樣項目中既有了commons-logging又有了slf4j。導(dǎo)致在log4j.properties里配置的mybatis的sql顯示配置,一直沒起作用,直到我查看maven dependencie中的jar包時,才發(fā)現(xiàn)項目既依賴了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提供了對隱式依賴jar包的查看功能:在eclipse中打開一個pom文件,在Dependency Hierarchy的Tab頁中,就可以查看當(dāng)前pom文件中顯示聲明的jar包,及這些顯示聲明的jar中隱式引入的依賴jar包。

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

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

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

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

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

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

