亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決maven依賴沖突?

發布時間:2020-06-23 16:11:05 來源:億速云 閱讀:446 作者:清晨 欄目:開發技術

不懂如何解決maven依賴沖突??其實想解決這個問題也不難,下面讓小編帶著大家一起學習怎么去解決,希望大家閱讀完這篇文章后大所收獲。

什么是依賴沖突

依賴沖突是指項目依賴的某一個jar包,有多個不同的版本,因而造成類包版本沖突

依賴沖突的原因

依賴沖突很經常是類包之間的間接依賴引起的。每個顯式聲明的類包都會依賴于一些其它的隱式類包,這些隱式的類包會被maven間接引入進來,從而造成類包沖突

如何解決依賴沖突

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

1、查看依賴沖突

a、通過dependency:tree是命令來檢查版本沖突

mvn -Dverbose dependency:tree

當敲入上述命令時,控制臺會出現形如下內容

[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包被重復依賴,最后寫著omitted for conflict with xxx的,說明和別的jar包版本沖突了,而該行的jar包不會被引入。比如上面有一行最后寫著omitted for conflict with 5.2.7.RELEASE,表示spring-core 5.2.0版本不會被項目引用,而spring-core 5.2.7版本會被項目引用

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

maven helper插件安裝成功,點開pom.xml會發現多了一個Dependency Analyzer視圖,如下

如何解決maven依賴沖突?

上面按鈕的圖標含義如下

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

上圖說明有3個jar存在沖突,點擊沖突的jar,可以查看和哪個jar產生沖突,如下圖

如何解決maven依賴沖突?

2、解決沖突

項目的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>

通過查看依賴樹,我們知道項目會引用5.2.7.RELEASE的spring core jar包,而不會引用5.2.0的jar包,如果我們想用5.2.0版本的spring core包,我們該如何做?

a、使用第一聲明者優先原則

誰先定義的就用誰的傳遞依賴,即在pom.xml文件自上而下,先聲明的jar坐標,就先引用該jar的傳遞依賴。因此我們如果要使用5.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)

通過依賴樹,我們可以看到項目已經引入5.2.0版本的spring core包

b、使用路徑近者優先原則

即直接依賴級別高于傳遞依賴。因此我們可以在最先的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>

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



  </dependencies>

如何解決maven依賴沖突? 

通過上圖可以看到項目引入是 spring core 5.2.0的包

c、排除依賴

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

如何解決maven依賴沖突?

它產生的效果和如下配置是一樣

 <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>

如何解決maven依賴沖突?

通過上圖可以看到項目引入是 spring core 5.2.0的包

4、版本鎖定

使用dependencyManagement 進行版本鎖定,dependencyManagement可以統一管理項目的版本號,確保應用的各個項目的依賴和版本一致。

如果我們項目中只想使用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>

如何解決maven依賴沖突?

通過上圖可以看到項目引入是 spring core 5.2.0的包

感謝你能夠認真閱讀完這篇文章,希望小編分享如何解決maven依賴沖突?內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿克苏市| 诸城市| 大新县| 舟山市| 桐庐县| 南丰县| 集安市| 固阳县| 蒲江县| 潜山县| 灵武市| 台山市| 太仆寺旗| 玉门市| 贵定县| 临沭县| 永平县| 巴林左旗| 高邮市| 揭西县| 岐山县| 邯郸县| 涟水县| 庆安县| 龙口市| 和龙市| 专栏| 宝鸡市| 那坡县| 寻乌县| 怀宁县| 麦盖提县| 德阳市| 当涂县| 馆陶县| 铜川市| 蕉岭县| 南投市| 寿阳县| 青铜峡市| 江西省|