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

Maven解決jar包版本沖突的4種方法詳解

 更新時間:2023年07月28日 10:44:34   作者:尚少  
這篇文章主要給大家介紹了關于Maven解決jar包版本沖突的4種方法代碼,maven工程要導入jar包的坐標,就必須要考慮解決jar包沖突,文中介紹的非常詳細,需要的朋友可以參考下

概念

先解釋下maven的依賴傳遞:a jar包引入了b jar包,如果項目中引入了a jar包,其實也會把a依賴的b jar包引入。那現(xiàn)在有a、c這2個jar包,a jar包依賴的是1.0.0版本的b jar包,c jar包也依賴了b jar包,版本是2.0.0;如果項目中引入了a、c jar包,那b jar包到底引入哪個版本呢,是1.0.0還是2.0.0?這就是版本沖突,有4種方法可以解決。

路徑近者優(yōu)先

比如a依賴b(版本是1.0.0),項目中引入a,同時直接引入了b(版本是2.0.0),這時前者版本路徑是不是長點,看做是1,后者是0;所以項目引入的b jar包的版本也確定了,是2.0.0;如果a依賴b,b依賴了c(版本是1.0.0),d依賴了c(版本是2.0.0),項目中引入了a、d jar包,c jar包也會被引入,版本會是2.0.0(前者版本路徑是2,后者是1)。哪個版本的依賴路徑短,就是會引入這個版本的jar包。

第一聲明者優(yōu)先

如果a依賴了b(版本是1.0.0),c也依賴了b(版本是2.0.0);同時引入了a、c,這時b jar包的依賴路徑是一樣的了,就會用到這個原則:第一聲明者優(yōu)先。項目的pom.xml是這樣定義的:

<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>a</artifactId>
    <version>1.0.0</version>
</dependency>
<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>c</artifactId>
    <version>1.0.0</version>
</dependency>

a先聲明了,所以引入的b的版本也確定了:1.0.0;如果pom.xml中,這2個順序顛倒了,c放在前面了,引入的b的版本就會是2.0.0。

排除原則

同樣是a依賴了b(版本是1.0.0),c依賴了b(版本是2.0.0);就想要2.0.0版本的b,可以用排除原則:

<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>a</artifactId>
    <version>1.0.0</version>
    <exclusions>
	    <exclusion>
	        <groupId>xx.xx.xx</groupId>
	        <artifactId>b</artifactId>
	    </exclusion>
	</exclusions>
</dependency>
<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>c</artifactId>
    <version>1.0.0</version>
</dependency>

這時項目中引入a jar包時,不會把依賴的1.0.0版本的b jar包給引入(因為exclusion標簽把它排除了);但是引入c jar包時,依賴的2.0.0版本的b jar包照舊引入,這時就不存在版本沖突了,因為就引入了1個版本的b jar包,不是多個。所以項目是引入了2.0.0版本的b jar包。

版本鎖定

這個就更加硬霸,a依賴了b(版本是1.0.0),c依賴了b(版本是2.0.0),我想要引入的是1.0.0版本的b jar包或者是其余版本的(3.0.0),可以用版本鎖定:

<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>a</artifactId>
    <version>1.0.0</version>
    <exclusions>
	    <exclusion>
	        <groupId>xx.xx.xx</groupId>
	        <artifactId>b</artifactId>
	    </exclusion>
	</exclusions>
</dependency>
<dependency>
    <groupId>xx.xx.xx</groupId>
    <artifactId>c</artifactId>
    <version>1.0.0</version>
</dependency>

這時項目中引入的b jar包的版本就是3.0.0了,不是1.0.0或者是2.0.0,以dependencyManagement標簽中定義的版本為準。

總結(jié)

到此這篇關于Maven解決jar包版本沖突的4種方法的文章就介紹到這了,更多相關Maven解決jar包版本沖突內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何基于sqlite實現(xiàn)kafka延時消息詳解

    如何基于sqlite實現(xiàn)kafka延時消息詳解

    這篇文章主要給大家介紹了關于如何基于sqlite實現(xiàn)kafka延時消息的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-01-01
  • 一文詳解SpringBoot實現(xiàn)多數(shù)據(jù)源的自動切換

    一文詳解SpringBoot實現(xiàn)多數(shù)據(jù)源的自動切換

    在現(xiàn)代企業(yè)級應用中,為了提高系統(tǒng)的可維護性和擴展性,多數(shù)據(jù)源的配置和使用變得越來越常見,本文將,介紹如何在Spring Boot項目中實現(xiàn)多數(shù)據(jù)源的自動切換有需要的小伙伴可以了解下
    2025-10-10
  • maven搭建spring項目(圖文教程)

    maven搭建spring項目(圖文教程)

    下面小編就為大家?guī)硪黄猰aven搭建spring項目(圖文教程)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • spring boot 自動更新靜態(tài)文件和后臺代碼的實例

    spring boot 自動更新靜態(tài)文件和后臺代碼的實例

    下面小編就為大家分享一篇spring boot 自動更新靜態(tài)文件和后臺代碼的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • SpringBoot去除參數(shù)前后空格和XSS過濾

    SpringBoot去除參數(shù)前后空格和XSS過濾

    本文主要介紹了SpringBoot去除參數(shù)前后空格和XSS過濾,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot中Aware接口使用及原理解析

    SpringBoot中Aware接口使用及原理解析

    在Spring中存在一個Aware接口,實現(xiàn)該接口可以讓我們的Bean獲取到Spring容器中特定的資源,但該接口只是個標記接口,不存在任何方法,本文將給大家詳細介紹一下SpringBoot中Aware接口使用及原理,需要的朋友可以參考下
    2023-08-08
  • idea重新下載已刪除的maven依賴包操作

    idea重新下載已刪除的maven依賴包操作

    這篇文章主要介紹了idea重新下載已刪除的maven依賴包操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • java編程兩種樹形菜單結(jié)構(gòu)的轉(zhuǎn)換代碼

    java編程兩種樹形菜單結(jié)構(gòu)的轉(zhuǎn)換代碼

    這篇文章主要介紹了java編程兩種樹形菜單結(jié)構(gòu)的轉(zhuǎn)換代碼,首先介紹了兩種樹形菜單結(jié)構(gòu)的代碼,然后展示了轉(zhuǎn)換器實例代碼,最后分享了相關實例及結(jié)果演示,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • 解決springboot整合cxf啟動報錯,原因是版本問題

    解決springboot整合cxf啟動報錯,原因是版本問題

    這篇文章主要介紹了解決springboot整合cxf啟動報錯,原因是版本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java基礎總結(jié)之Thymeleaf詳解

    Java基礎總結(jié)之Thymeleaf詳解

    Thymeleaf是一種現(xiàn)代的基于服務器端的Java模板引擎技術,也是一個優(yōu)秀的面向Java的XML、XHTML、HTML5頁面模板,它具有豐富的標簽語言、函數(shù)和表達式,在使用Spring Boot框架進行頁面設計時,一般會選擇Thymeleaf模板,需要的朋友可以參考下
    2021-05-05

最新評論

铜川市| 电白县| 西乌| 普定县| 米易县| 淮滨县| 长丰县| 偃师市| 会昌县| 肇州县| 民乐县| 澄迈县| 贵溪市| 龙井市| 库伦旗| 道孚县| 石首市| 津南区| 邓州市| 镇沅| 永寿县| 新余市| 长海县| 揭阳市| 阿尔山市| 阿图什市| 湄潭县| 永新县| 蒲江县| 嘉义县| 砀山县| 凉山| 琼结县| 通化县| 建始县| 松潘县| 宁晋县| 灵璧县| 石城县| 德江县| 察隅县|