欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

maven依賴jar包時版本沖突的解決方案

 更新時間:2025年01月26日 10:30:51   作者:荒·湮  
這篇文章介紹了處理jar包依賴沖突的幾種方法,包括:優(yōu)先原則、路徑近者優(yōu)先、排除原則、版本鎖定原則、查看間接依賴、排包和處理jar包依賴沖突的總結

1、第一聲明優(yōu)先原則

在pom.xml配置文件中,如果有兩個名稱相同版本不同的依賴聲明,那么先寫的會生效。

  • 所以,先聲明自己要用的版本的jar包即可。
  • 所以,添加新依賴時要放在最后邊,以防止新依賴替換原有依賴造成版本沖突。

2、路徑近者優(yōu)先

直接依賴優(yōu)先于傳遞依賴,如果傳遞依賴的jar包版本沖突了,那么可以自己聲明一個指定版本的依賴jar,即可解決沖突。

3、排出原則

傳遞依賴沖突時,可以在不需要的jar的傳遞依賴中聲明排除,從而解決沖突。

<dependency>
        
  <groupId>org.apache.struts</groupId>  
  <artifactId>struts2-spring-plugin</artifactId> 
  <version>2.3.24</version>
        
  <exclusions>
          <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
          </exclusion>
  </exclusions>
  
</dependency>

4、版本鎖定原則(最常使用)

在配置文件pom.xml中先聲明要使用哪個版本的相應jar包,聲明后其他版本的jar包一律不依賴。解決了依賴沖突。

<properties>
        
  <spring.version>4.2.4.RELEASE</spring.version>
  <hibernate.version>5.0.7.Final</hibernate.version>
  <struts.version>2.3.24</struts.version>
    
</properties>
   
<!-- 鎖定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
    
<dependencyManagement>    
  
  <dependencies>
    
    <dependency>    
      
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>      
      <version>${spring.version}</version>
      
    </dependency>
    
</dependencies>
  
</dependencyManagement>

5、查看jar包的間接依賴

如果發(fā)現(xiàn)某個jar包,自己的pom中并沒有定義,想看一下是被哪個jar包間接引用的,執(zhí)行以下命令,直接輸出到當前項目下,然后在idea中打開,搜索要找的jar包名字即可。

這里的 “±” 和"-"并沒有什么意義,只是為了讓分級看起來更直觀。

mvn dependency:tree
mvn dependency:tree>temp

如果想看沖突和重復的具體情況,用verbose參數(shù)

mvn dependency:tree -Dverbose -Dincludes=[commons-collections]

因此,我們可以看到Commons Collections 2.0被選為2.1,因為它離它更近,并且默認情況下,Maven使用最近贏得策略解決版本沖突。

6、排包

如圖可知jai_core是在icepdf-core被間接引用的,如果jai_core的間接引入造成了依賴沖突,可在icepdf-core使用如下方式排出

        <dependency>
        <groupId>org.icepdf.os</groupId>
        <artifactId>icepdf-core</artifactId>
        <version>6.2.2</version>
        
        <exclusions>
            <exclusion>
                <groupId>javax.media</groupId>
                <artifactId>jai_core</artifactId>
            </exclusion>
        </exclusions>
    
    </dependency>

7、處理jar包依賴沖突總結

簡介:處理jar包依賴沖突,首先,對于多個jar包都引用同一jar包的情況,最好是在程序中顯式定義被共同引用的jar包的依賴,來統(tǒng)一版本號,方便維護

如果A和B都依賴同一jar包C,可能會出現(xiàn)兩種情況

A和B引用的C版本相同,這時按照pom定義順序選擇第一個即可,沒有沖突問題,如果在項目的maven中顯示定義了C依賴,那么用選擇項目定義的依賴,反正version都一樣,沒有影響

A和B依賴的C版本不同,選擇版本高的那個,這時會出現(xiàn)兩種結果

(1) 高版本兼容低版本,所以不會出現(xiàn)問題(2)高版本不兼容低版本,假如A依賴C2版本,B依賴C3版本,C3不兼容C2,maven選擇了高版本C3,對A來說會出現(xiàn)問題?

有3種解決方法[1] [2]如果B版本也可依賴C2,在項目的maven中顯示定義對C2的依賴,這樣所有都使用C2版本[3]如果B版本不支持C2版本,只能降低B版本,找到依賴C2的B版本從功能性和可維護性考慮,高版本提供的功能更多,bug更少,優(yōu)先考慮1再考慮2最后考慮3

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java實現(xiàn)圖片驗證碼

    java實現(xiàn)圖片驗證碼

    這篇文章主要為大家詳細介紹了java實現(xiàn)圖片驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Java實現(xiàn)HttpGet請求傳body參數(shù)

    Java實現(xiàn)HttpGet請求傳body參數(shù)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)HttpGet請求傳body參數(shù)的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • java基礎之初始化ArrayList時直接賦值的4種方式總結

    java基礎之初始化ArrayList時直接賦值的4種方式總結

    ArrayList是Java中的一個類,它是Java集合框架中的一部分,用于實現(xiàn)動態(tài)數(shù)組,下面這篇文章主要給大家介紹了關于java基礎之初始化ArrayList時直接賦值的4種方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • 一文帶你掌握SpringBoot中常見定時任務的實現(xiàn)

    一文帶你掌握SpringBoot中常見定時任務的實現(xiàn)

    這篇文章主要為大家詳細介紹了Spring?Boot中定時任務的基本用法、高級特性以及最佳實踐,幫助開發(fā)人員更好地理解和應用定時任務,提高系統(tǒng)的穩(wěn)定性和可靠性,需要的可以參考下
    2024-03-03
  • Java多線程start()方法原理解析

    Java多線程start()方法原理解析

    這篇文章主要介紹了Java多線程start()方法原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • IDEA導入jar包的完整實現(xiàn)步驟

    IDEA導入jar包的完整實現(xiàn)步驟

    由于導入jar包項目存在很多不確定的問題,導致每次都需要調試、配置好多遍,對此特意記錄下來,這篇文章主要給大家介紹了關于IDEA導入jar包的相關資料,需要的朋友可以參考下
    2024-01-01
  • 關于jackson序列化和feign返回值的問題

    關于jackson序列化和feign返回值的問題

    這篇文章主要介紹了關于jackson序列化和feign返回值的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java泛型常用通配符實例解析

    java泛型常用通配符實例解析

    這篇文章主要介紹了java泛型常用通配符實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Java字符串排序的幾種實現(xiàn)方式

    Java字符串排序的幾種實現(xiàn)方式

    這篇文章主要給大家介紹了關于Java字符串排序的幾種實現(xiàn)方式, 使用Java平臺進行字符串排序被認為是一件簡單的工作,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • java 實現(xiàn)簡單圣誕樹的示例代碼(圣誕節(jié)快樂)

    java 實現(xiàn)簡單圣誕樹的示例代碼(圣誕節(jié)快樂)

    這篇文章主要介紹了java 實現(xiàn)簡單圣誕樹的示例代碼(圣誕節(jié)快樂),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12

最新評論