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

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

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

概念

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

路徑近者優(yōu)先

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

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

如果a依賴了b(版本是1.0.0),c也依賴了b(版本是2.0.0);同時(shí)引入了a、c,這時(shí)b jar包的依賴路徑是一樣的了,就會用到這個(gè)原則:第一聲明者優(yōu)先。項(xiàng)目的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個(gè)順序顛倒了,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>

這時(shí)項(xiàng)目中引入a jar包時(shí),不會把依賴的1.0.0版本的b jar包給引入(因?yàn)閑xclusion標(biāo)簽把它排除了);但是引入c jar包時(shí),依賴的2.0.0版本的b jar包照舊引入,這時(shí)就不存在版本沖突了,因?yàn)榫鸵肓?個(gè)版本的b jar包,不是多個(gè)。所以項(xiàng)目是引入了2.0.0版本的b jar包。

版本鎖定

這個(gè)就更加硬霸,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>

這時(shí)項(xiàng)目中引入的b jar包的版本就是3.0.0了,不是1.0.0或者是2.0.0,以dependencyManagement標(biāo)簽中定義的版本為準(zhǔn)。

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了idea重新下載已刪除的maven依賴包操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    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)換器實(shí)例代碼,最后分享了相關(guān)實(shí)例及結(jié)果演示,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • 解決springboot整合cxf啟動報(bào)錯(cuò),原因是版本問題

    解決springboot整合cxf啟動報(bào)錯(cuò),原因是版本問題

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

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

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

最新評論

丹棱县| 镇宁| 曲松县| 靖宇县| 随州市| 车致| 嘉义市| 济源市| 图木舒克市| 毕节市| 和静县| 萝北县| 巴彦淖尔市| 米易县| 湘乡市| 潼南县| 阳信县| 小金县| 武陟县| 永靖县| 新绛县| 伽师县| 崇礼县| 横山县| 子长县| 鄂伦春自治旗| 通河县| 本溪市| 错那县| 石狮市| 吉安县| 新闻| 平乐县| 南宁市| 东阿县| 镇安县| 江永县| 乡宁县| 梨树县| 枣阳市| 公主岭市|