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

詳解maven依賴沖突以及解決方法

 更新時(shí)間:2020年06月23日 14:12:30   作者:linyb極客之路  
這篇文章主要介紹了maven依賴沖突以及解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

什么是依賴沖突

依賴沖突是指項(xiàng)目依賴的某一個(gè)jar包,有多個(gè)不同的版本,因而造成類包版本沖突

依賴沖突的原因

依賴沖突很經(jīng)常是類包之間的間接依賴引起的。每個(gè)顯式聲明的類包都會(huì)依賴于一些其它的隱式類包,這些隱式的類包會(huì)被maven間接引入進(jìn)來(lái),從而造成類包沖突

如何解決依賴沖突

首先查看產(chǎn)生依賴沖突的類jar,其次找出我們不想要的依賴類jar,手工將其排除在外就可以了。具體執(zhí)行步驟如下

1、查看依賴沖突

a、通過(guò)dependency:tree是命令來(lái)檢查版本沖突

mvn -Dverbose dependency:tree

當(dāng)敲入上述命令時(shí),控制臺(tái)會(huì)出現(xiàn)形如下內(nèi)容

[INFO] org.example:hello:jar:1.0-SNAPSHOT
[INFO] +- org.springframework:spring-context:jar:5.2.7.RELEASE:compile
[INFO] | +- (org.springframework:spring-aop:jar:5.2.7.RELEASE:compile - omitted for conflict with 5.2.0.RELEASE)
[INFO] | +- org.springframework:spring-beans:jar:5.2.7.RELEASE:compile
[INFO] | | \- (org.springframework:spring-core:jar:5.2.7.RELEASE:compile - omitted for duplicate)
[INFO] | +- org.springframework:spring-core:jar:5.2.7.RELEASE:compile
[INFO] | | \- org.springframework:spring-jcl:jar:5.2.7.RELEASE:compile
[INFO] | \- org.springframework:spring-expression:jar:5.2.7.RELEASE:compile
[INFO] | \- (org.springframework:spring-core:jar:5.2.7.RELEASE:compile - omitted for duplicate)
[INFO] \- org.springframework:spring-aop:jar:5.2.0.RELEASE:compile
[INFO] +- (org.springframework:spring-beans:jar:5.2.0.RELEASE:compile - omitted for conflict with 5.2.7.RELEASE)
[INFO] \- (org.springframework:spring-core:jar:5.2.0.RELEASE:compile - omitted for conflict with 5.2.7.RELEASE)

其中omitted for duplicate表示有jar包被重復(fù)依賴,最后寫著omitted for conflict with xxx的,說(shuō)明和別的jar包版本沖突了,而該行的jar包不會(huì)被引入。比如上面有一行最后寫著omitted for conflict with 5.2.7.RELEASE,表示spring-core 5.2.0版本不會(huì)被項(xiàng)目引用,而spring-core 5.2.7版本會(huì)被項(xiàng)目引用

b、如果是idea,可以安裝maven helper插件來(lái)檢查依賴沖突

maven helper插件安裝成功,點(diǎn)開pom.xml會(huì)發(fā)現(xiàn)多了一個(gè)Dependency Analyzer視圖,如下

上面按鈕的圖標(biāo)含義如下

  • Conflicts(查看沖突)
  • All Dependencies as List(列表形式查看所有依賴)
  • All Dependencies as Tree(樹形式查看所有依賴)

上圖說(shuō)明有3個(gè)jar存在沖突,點(diǎn)擊沖突的jar,可以查看和哪個(gè)jar產(chǎn)生沖突,如下圖

2、解決沖突

項(xiàng)目的pom.xml形如下

 <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.7.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>


  </dependencies>

通過(guò)查看依賴樹,我們知道項(xiàng)目會(huì)引用5.2.7.RELEASE的spring core jar包,而不會(huì)引用5.2.0的jar包,如果我們想用5.2.0版本的spring core包,我們?cè)撊绾巫觯?/p>

a、使用第一聲明者優(yōu)先原則

誰(shuí)先定義的就用誰(shuí)的傳遞依賴,即在pom.xml文件自上而下,先聲明的jar坐標(biāo),就先引用該jar的傳遞依賴。因此我們?nèi)绻褂?.2.0版本的spring core包,我們可以改成如下聲明

 <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.7.RELEASE</version>
    </dependency>

  </dependencies>

查看依賴樹

[INFO] org.example:hello:jar:1.0-SNAPSHOT
[INFO] +- org.springframework:spring-aop:jar:5.2.0.RELEASE:compile
[INFO] | +- org.springframework:spring-beans:jar:5.2.0.RELEASE:compile
[INFO] | | \- (org.springframework:spring-core:jar:5.2.0.RELEASE:compile - omitted for duplicate)
[INFO] | \- org.springframework:spring-core:jar:5.2.0.RELEASE:compile
[INFO] | \- org.springframework:spring-jcl:jar:5.2.0.RELEASE:compile
[INFO] \- org.springframework:spring-context:jar:5.2.7.RELEASE:compile
[INFO] +- (org.springframework:spring-aop:jar:5.2.7.RELEASE:compile - omitted for conflict with 5.2.0.RELEASE)
[INFO] +- (org.springframework:spring-beans:jar:5.2.7.RELEASE:compile - omitted for conflict with 5.2.0.RELEASE)
[INFO] +- (org.springframework:spring-core:jar:5.2.7.RELEASE:compile - omitted for conflict with 5.2.0.RELEASE)
[INFO] \- org.springframework:spring-expression:jar:5.2.7.RELEASE:compile
[INFO] \- (org.springframework:spring-core:jar:5.2.7.RELEASE:compile - omitted for conflict with 5.2.0.RELEASE)

通過(guò)依賴樹,我們可以看到項(xiàng)目已經(jīng)引入5.2.0版本的spring core包

b、使用路徑近者優(yōu)先原則

即直接依賴級(jí)別高于傳遞依賴。因此我們可以在最先的pom.xml添加如下內(nèi)容

 <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.7.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>



  </dependencies>

 

通過(guò)上圖可以看到項(xiàng)目引入是 spring core 5.2.0的包

c、排除依賴

排除依賴如果是idea,可以使用maven helper插件進(jìn)行排除。點(diǎn)開pom.xml,切換到Dependency Analyzer視圖,選擇All Dependencies as Tree,點(diǎn)擊要排除的jar,右鍵會(huì)出現(xiàn)Execlude選項(xiàng),如下

它產(chǎn)生的效果和如下配置是一樣

 <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.7.RELEASE</version>
      <exclusions>
        <exclusion>
          <artifactId>spring-core</artifactId>
          <groupId>org.springframework</groupId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

  </dependencies>

通過(guò)上圖可以看到項(xiàng)目引入是 spring core 5.2.0的包

4、版本鎖定

使用dependencyManagement 進(jìn)行版本鎖定,dependencyManagement可以統(tǒng)一管理項(xiàng)目的版本號(hào),確保應(yīng)用的各個(gè)項(xiàng)目的依賴和版本一致。

如果我們項(xiàng)目中只想使用spring core 5.2.0的包,pom.xml可以改為如下

<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.2.0.RELEASE</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.7.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

  </dependencies>

通過(guò)上圖可以看到項(xiàng)目引入是 spring core 5.2.0的包

總結(jié)

綜上就是maven如何排查依賴沖突以及解決方法,對(duì)于排查依賴個(gè)人比較推薦使用maven helper插件,至于解決依賴沖突個(gè)人推薦使用 版本鎖定 的方法,此外dependencyManagement只是聲明依賴,并不自動(dòng)實(shí)現(xiàn)引入,因此子項(xiàng)目需要顯示的聲明需要用的依賴

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

相關(guān)文章

  • Java多線程中線程的兩種創(chuàng)建方式及比較代碼示例

    Java多線程中線程的兩種創(chuàng)建方式及比較代碼示例

    這篇文章主要介紹了Java多線程中線程的兩種創(chuàng)建方式及比較代碼示例,簡(jiǎn)單介紹了線程的概念,并行與并發(fā)等,然后通過(guò)實(shí)例代碼向大家展示了線程的創(chuàng)建,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Mybatis分頁(yè)P(yáng)ageHelper插件代碼實(shí)例

    Mybatis分頁(yè)P(yáng)ageHelper插件代碼實(shí)例

    這篇文章主要介紹了Mybatis分頁(yè)P(yáng)ageHelper插件代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • springboot 微信授權(quán)網(wǎng)頁(yè)登錄操作流程

    springboot 微信授權(quán)網(wǎng)頁(yè)登錄操作流程

    這篇文章主要介紹了springboot 微信授權(quán)網(wǎng)頁(yè)登錄操作流程,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot MDC全鏈路調(diào)用日志跟蹤實(shí)現(xiàn)詳解

    SpringBoot MDC全鏈路調(diào)用日志跟蹤實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了SpringBoot MDC全鏈路調(diào)用日志跟蹤實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Java BigDecimal基礎(chǔ)用法詳解

    Java BigDecimal基礎(chǔ)用法詳解

    Java在java.math包中提供的API類BigDecimal,用來(lái)對(duì)超過(guò)16位有效位的數(shù)進(jìn)行精確的運(yùn)算。雙精度浮點(diǎn)型變量double可以處理16位有效數(shù),但在實(shí)際應(yīng)用中,可能需要對(duì)更大或者更小的數(shù)進(jìn)行運(yùn)算和處理
    2022-06-06
  • Spring防止重復(fù)點(diǎn)擊的兩種實(shí)現(xiàn)方法

    Spring防止重復(fù)點(diǎn)擊的兩種實(shí)現(xiàn)方法

    頁(yè)面重復(fù)提交導(dǎo)致的問(wèn)題就是數(shù)據(jù)被重復(fù)保存,我們經(jīng)常會(huì)誤觸點(diǎn)擊兩次,所以本文小編給大家介紹了Spring防止重復(fù)點(diǎn)擊的兩種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2025-01-01
  • springboot使用過(guò)濾器詳解

    springboot使用過(guò)濾器詳解

    本文主要介紹了過(guò)濾器的基本概念,過(guò)濾器的生命周期,以及如何通過(guò)注解方式和非注解方式實(shí)現(xiàn)過(guò)濾器,過(guò)濾器是客戶端與服務(wù)器資源文件之間的一道過(guò)濾網(wǎng),能夠幫助我們過(guò)濾不符合要求的請(qǐng)求,通常用作Session校驗(yàn)
    2024-10-10
  • MybatisPlus?自定義插件實(shí)現(xiàn)攔截SQL修改功能(實(shí)例詳解)

    MybatisPlus?自定義插件實(shí)現(xiàn)攔截SQL修改功能(實(shí)例詳解)

    這篇文章主要介紹了MybatisPlus?自定義插件實(shí)現(xiàn)攔截SQL修改功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • Mybatis批量插入數(shù)據(jù)返回主鍵的實(shí)現(xiàn)

    Mybatis批量插入數(shù)據(jù)返回主鍵的實(shí)現(xiàn)

    這篇文章主要介紹了Mybatis批量插入數(shù)據(jù)返回主鍵的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • java字符串的截取方法substring()代碼解析

    java字符串的截取方法substring()代碼解析

    這篇文章主要介紹了java字符串的截取方法substring()代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

酒泉市| 铜山县| 湖口县| 嫩江县| 富阳市| 巴马| 遵义县| 从江县| 织金县| 黄平县| 江阴市| 鹿泉市| 瑞昌市| 吉隆县| 惠东县| 察雅县| 龙游县| 获嘉县| 北碚区| 平南县| 收藏| 银川市| 太白县| 龙州县| 保康县| 凌海市| 奇台县| 木里| 金秀| 阳高县| 大英县| 杨浦区| 改则县| 重庆市| 苍南县| 成都市| 外汇| 乐安县| 太谷县| 湘潭县| 龙井市|