最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

問題描述

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

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

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

解決思路

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

具體解決過程

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

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

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

定位Jar被依賴的地方

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

mvn dependency:tree -Dverbose > tree.txt

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

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

omitted for duplicate

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

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

omitted for conflict with 0.5.3

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

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

前提是我們已經(jīng)知道了哪個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>

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

相關(guān)文章

  • SpringBoot與rabbitmq的結(jié)合的示例

    SpringBoot與rabbitmq的結(jié)合的示例

    這篇文章主要介紹了SpringBoot與rabbitmq的結(jié)合的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Spring基于xml文件配置Bean過程詳解

    Spring基于xml文件配置Bean過程詳解

    這篇文章主要介紹了spring基于xml文件配置Bean過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Java 數(shù)組迭代你會用嗎

    Java 數(shù)組迭代你會用嗎

    Java 數(shù)組是我們學(xué)習(xí)或工作中常用到的數(shù)據(jù)結(jié)構(gòu),我們會經(jīng)常寫數(shù)組迭代的代碼,本文介紹三種數(shù)組迭代的方式,感興趣的可以了解一下
    2021-09-09
  • JAVA中判空方法isEmpty()用法舉例詳解

    JAVA中判空方法isEmpty()用法舉例詳解

    這篇文章主要給大家介紹了關(guān)于JAVA中判空方法isEmpty()用法的相關(guān)資料,isEmpty()是Java中常用的方法之一,用于判斷集合、字符串、數(shù)組等是否為空,文中通過代碼將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • JAVA自定義注解的步驟示例詳解

    JAVA自定義注解的步驟示例詳解

    本文介紹了Java中注解的基本概念、自定義注解的步驟、常用元注解的解析以及自定義注解的常見應(yīng)用場景,自定義注解可以幫助開發(fā)者實現(xiàn)日志記錄、權(quán)限校驗、參數(shù)校驗等通用功能,提高代碼的復(fù)用性和可讀性,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • java 多態(tài)性詳解及常見面試題

    java 多態(tài)性詳解及常見面試題

    這篇文章主要介紹了java 多態(tài)性詳解及常見面試題的相關(guān)資料,這里對java 的多態(tài)性做了資料整理,并列舉常見的關(guān)于多態(tài)性的面試題,需要的朋友可以參考下
    2016-11-11
  • Java的Object類九個方法技巧

    Java的Object類九個方法技巧

    這篇文章主要介紹了Java的Object類九個方法技巧,Java的Object?類的完整路徑是java.lang.Object?,是所有類的父類編譯,下文相關(guān)資料,需要的朋友可以參考一下
    2022-04-04
  • 一篇文章帶你搞定JAVA泛型

    一篇文章帶你搞定JAVA泛型

    泛型是Java中的高級概念,也是構(gòu)建框架必備技能,比如各種集合類都是泛型實現(xiàn)的,今天詳細(xì)聊聊Java中的泛型概念,希望有所收獲
    2021-07-07
  • mac系統(tǒng)如何下載和安裝jdk的三種方式

    mac系統(tǒng)如何下載和安裝jdk的三種方式

    這篇文章主要介紹了mac系統(tǒng)下載和安裝jdk的三種方式,每種方法都有其特點(diǎn),如安裝來源及可靠性、安裝過程及便捷性、版本管理及切換、環(huán)境配置、jdk默認(rèn)安裝路徑以及占用空間及資源管理等,需要的朋友可以參考下
    2025-01-01
  • Java excel數(shù)據(jù)導(dǎo)入mysql的實現(xiàn)示例詳解

    Java excel數(shù)據(jù)導(dǎo)入mysql的實現(xiàn)示例詳解

    今天教大家如何使用Java將excel數(shù)據(jù)導(dǎo)入MySQL,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴呢很有幫助,需要的朋友可以參考下
    2022-08-08

最新評論

航空| 江油市| 朝阳区| 印江| 阿克陶县| 黎平县| 德江县| 墨竹工卡县| 巴彦淖尔市| 高台县| 临高县| 浪卡子县| 罗平县| 平泉县| 溧阳市| 余干县| 招远市| 南安市| 太白县| 武夷山市| 黔南| 兰坪| 中阳县| 洪江市| 凉山| 台东市| 德化县| 大渡口区| 博白县| 榆树市| 措勤县| 仁布县| 瓦房店市| 五河县| 富民县| 蒙山县| 介休市| 屯留县| 那坡县| 安阳市| 方正县|