亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Maven重復(fù)依賴問題解決(同一個(gè)jar多個(gè)版本)

 更新時(shí)間:2023年06月15日 15:03:53   作者:奔跑吧人生  
本文主要介紹了Maven重復(fù)依賴問題解決(同一個(gè)jar多個(gè)版本),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

問題描述

現(xiàn)在開發(fā)項(xiàng)目,一般都會(huì)創(chuàng)建maven工程,用它來管理依賴實(shí)在是方便了,當(dāng)然它還有其它用途。但是在實(shí)際的情況中往往會(huì)有重復(fù)依賴的問題,比如創(chuàng)建的工程A,依賴了b-1.0.jar,而b-1.0.jar又依賴了d-1.0.jar(這個(gè)我們本身是不能直接看到的),同時(shí)我們自己的工程又依賴了d-2.1.jar,或者工程A依賴了c-1.0.jar,c-1.0.jar依賴了d-2.0.jar,顯然,d.jar有3個(gè)版本,3者之間是重復(fù)的,甚至是沖突的。如下圖所示:

重復(fù)依賴會(huì)怎么樣?

首先從工程角度來講,引用了同一個(gè)Jar的不同版本,這肯定是依賴有問題,或者就是錯(cuò)誤的。
其次,重復(fù)依賴,在項(xiàng)目啟動(dòng)過程當(dāng)中可能會(huì)有一些警告信息。
當(dāng)然,最重要的是引發(fā)代碼異常,最常見的就是NoSuchMethod。

解決思路

  • 尋找重復(fù)引用的jar。
  • 定位這些Jar在哪里被引用了。
  • 接下來需要分析舍與留,原則上保留高版本,大多數(shù)情況下是向下兼容的。但是不一定,有時(shí)候也得保留低版本,或者有時(shí)候兩者都需要保留。
  • 如果是一個(gè)工程,其實(shí)處理起來還比較好處理。但是如果有多個(gè)工程,最終我們可能將所有的依賴合在一塊兒。處理起來可能會(huì)稍微麻煩些,比如工程1依賴了2.1版本,工程2依賴了2.2版本,你把工程1的2.1的依賴去掉,但同時(shí)還需要把2.2的加在工程1上面,否則可能編譯不通過。
  • 最重要的就是,調(diào)整之后,盡可能做全面測(cè)試。特別是一些間接依賴,如果去除的話,編譯不會(huì)有問題,但運(yùn)行起來會(huì)有問題。

具體解決過程

上述5個(gè)步驟,重點(diǎn)說一下1和2.

尋找重復(fù)引用的jar

  • 觀察法:把所有的jar依賴打包到同一個(gè)目錄下,觀察。
  • 運(yùn)行法:運(yùn)行階段會(huì)報(bào)錯(cuò),一旦報(bào)錯(cuò),基本上就定位到了。
  • 掃描法:專業(yè)的測(cè)試人員,可以進(jìn)行掃描jar包并統(tǒng)計(jì)。
  • 搜索法:依靠maven進(jìn)行搜索,這個(gè)方法在接下來會(huì)講到。

定位Jar被依賴的地方

在maven工程處打開命令行,輸入:

mvn dependency:tree -Dverbose > tree.txt

這個(gè)命令會(huì)把這個(gè)工程pom.xml里面所有的依賴通過樹的形狀展示出來,tree.txt:

樹形結(jié)構(gòu)其實(shí)看得比較清楚,里面有一些關(guān)鍵信息,比如:

omitted for duplicate

這個(gè)意思是依賴是重復(fù)的,當(dāng)然這個(gè)沒有關(guān)系。

當(dāng)然還有一些沖突提醒,上圖沒有,如下:

omitted for conflict with 0.5.3

顯示就是這個(gè)版本與0.5.3這個(gè)版本沖突了,這個(gè)也是我上面說到的搜索法,你可以直接搜索“conflict”這個(gè)單詞,就可以了。當(dāng)然這種方式僅限單個(gè)工程。

拿到這棵樹以后,怎么辦呢?

前提是我們已經(jīng)知道了哪個(gè)jar包沖突了,那直接就在文本里面搜索,找到不同版本的引用之處,然后慎重考慮之后,通過exclusions標(biāo)簽進(jìn)行去除,如下:

<dependency>
			<groupId>jaxen</groupId>
			<artifactId>jaxen</artifactId>
			<version>1.1.1</version>
			<exclusions>
				<exclusion>
					<groupId>xerces</groupId>
					<artifactId>xercesImpl</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

去除的同時(shí)需要考慮的一些問題,在解決思路里面提及了一些。到此這篇關(guān)于Maven重復(fù)依賴問題解決(同一個(gè)jar多個(gè)版本)的文章就介紹到這了,更多相關(guān)Maven重復(fù)依賴內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于shiro中部分SpringCache失效問題的解決方法

    關(guān)于shiro中部分SpringCache失效問題的解決方法

    這篇文章主要給大家介紹了關(guān)于shiro中部分SpringCache失效問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • SpringAop實(shí)現(xiàn)原理及代理模式詳解

    SpringAop實(shí)現(xiàn)原理及代理模式詳解

    Spring的AOP就是通過動(dòng)態(tài)代理實(shí)現(xiàn)的,使用了兩個(gè)動(dòng)態(tài)代理,分別是JDK的動(dòng)態(tài)代理和CGLIB動(dòng)態(tài)代理,本文重點(diǎn)給大家介紹下SpringAop實(shí)現(xiàn)原理及代理模式,感興趣的朋友一起看看吧
    2022-04-04
  • Spring?Security自定義認(rèn)證邏輯實(shí)例詳解

    Spring?Security自定義認(rèn)證邏輯實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于Spring?Security自定義認(rèn)證邏輯的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • 若依前后端打成一個(gè)JAR包部署的完整步驟

    若依前后端打成一個(gè)JAR包部署的完整步驟

    這篇文章主要介紹了如何將若依前后端分離項(xiàng)目打包成jar,不使用nginx轉(zhuǎn)發(fā),前端修改了路由模式和環(huán)境變量配置,后端增加了依賴、配置了Thymeleaf和訪問路徑,需要的朋友可以參考下
    2025-01-01
  • java中如何實(shí)現(xiàn) zip rar 7z 壓縮包解壓

    java中如何實(shí)現(xiàn) zip rar 7z 壓縮包解壓

    這篇文章主要介紹了java中如何實(shí)現(xiàn) zip rar 7z 壓縮包解壓?jiǎn)栴},具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • maven的5種打包方式小結(jié)

    maven的5種打包方式小結(jié)

    本文主要介紹了maven的5種打包方式小結(jié),主要是幾種插件打包,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • 解決Java中properties文件編碼問題

    解決Java中properties文件編碼問題

    大家好,本篇文章主要講的是解決Java中properties文件編碼問題,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • Java通過python命令執(zhí)行DataX任務(wù)的實(shí)例

    Java通過python命令執(zhí)行DataX任務(wù)的實(shí)例

    今天小編就為大家分享一篇Java通過python命令執(zhí)行DataX任務(wù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 開源項(xiàng)目ERM模型轉(zhuǎn)jpa實(shí)體maven插件使用

    開源項(xiàng)目ERM模型轉(zhuǎn)jpa實(shí)體maven插件使用

    這篇文章主要為大家介紹了開源項(xiàng)目ERM模型轉(zhuǎn)jpa實(shí)體maven插件的使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • mybatis-plus實(shí)現(xiàn)自定義SQL、多表查詢與多表分頁(yè)查詢語句實(shí)例

    mybatis-plus實(shí)現(xiàn)自定義SQL、多表查詢與多表分頁(yè)查詢語句實(shí)例

    mybatisplus是個(gè)很好用的插件,相信小伙伴們都知道,下面這篇文章主要給大家介紹了關(guān)于mybatis-plus實(shí)現(xiàn)自定義SQL、多表查詢與多表分頁(yè)查詢語句的相關(guān)資料,需要的朋友可以參考下
    2022-09-09

最新評(píng)論