中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

maven的依賴特性以及沖突解決是什么

發布時間:2021-10-21 09:46:03 來源:億速云 閱讀:168 作者:柒染 欄目:大數據

maven的依賴特性以及沖突解決是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

1.maven依賴的幾個特性

1.1 依賴范圍 -scope標簽

maven在構建過程有3套classpath,我們會根據配置依賴的范圍 依賴不同的classpath,如下圖:

    maven的依賴特性以及沖突解決是什么

compile: 默認是compile,對 編譯 測試 運行 都有效

provided: 對編譯和測試classpath有效,運行的時候不需要加入,例如 jsp 依賴 searvlet api ,比如我們在編譯和測試的時候有效但是在運行的時候  容器已經提供servletapi,如果加入會造成沖突

runtime: 只在測試和運行時 有效,比較典型的例子 jdbc api,只有在啟動代碼測試或者運行的時候才會啟用

test: 只會在測試時有效,比較典型例子 就是junit ,只有再測試的時候 才會啟用

    1.2 依賴傳遞

比如我們引入某一個依賴spring-test,依賴傳遞特性會很方便幫助我們下來它相關的依賴,而不必有時會因為引入jar有問題而煩惱,但是也有弊端,存在一些不必要的依賴,可能會造成沖突。

    maven的依賴特性以及沖突解決是什么

   1.3 依賴排除 -exclusion標簽

 依賴排除的特性 也是為了解決依賴沖突的一個方法,很方便去除依賴傳遞過程中不必要的依賴。在下面依賴沖沖突會用到 該標簽。

    maven的依賴特性以及沖突解決是什么

    1.4 依賴沖突產生原因

使用maven久了會發現存在依賴沖突的問題,由于依賴的傳遞特性會引入很多隱式的依賴和現有顯示jar版本     所沖突,從而造成版本沖突的問題。要解決這個問題,首先就是要查看pom.xml顯式和隱式的依賴類包,       然后通過這個類包樹找出我們不想要的依賴類包,手工將其排除在外就可以了。

2.依賴沖突的解決

  2.1兩個基本原則:

    1).短路優先原則

        A->B->logback-1.0.jar
        A->logback-1.1.jar

     2).先聲明先優先原則(先解析先引用)
       與項目A pom中配置 引用坐標的順序有關,如果依賴B在C前的話 就優先B,反之...

       A->B->logback-1.0.jar
       A->C->logback-1.1.jar

    2.2 演示兩個原則

    1).創建三個maven工程  

        maven-01,maven-02,maven-03

    2).三個工程依賴結構: 

      maven-01依賴 spring-test,maven-02,maven-03 (maven-02/03需要首先提交本地倉庫,maven-01才能找到 ,可以參考尋找構件過程:1.3 倉庫尋找構件過程) ;

      maven-02依賴commons-logging-1.1.1;

      maven-03工程依賴 commons-logging-1.1.3

     3).看下myEclipse或者執行mvn dependency:tree 查看依賴樹:

     myeclispe:依賴樹

    maven的依賴特性以及沖突解決是什么

  4).沖突解決辦法:

   4.1  pom配置1:

Xml代碼 

1.  <dependency>&nbsp;&nbsp;
2.  &nbsp;&nbsp;&nbsp;&nbsp;<groupid>org.springframework</groupid>&nbsp;&nbsp;
3.  &nbsp;&nbsp;&nbsp;&nbsp;<artifactid>spring-test</artifactid>&nbsp;&nbsp;
4.  &nbsp;&nbsp;&nbsp;&nbsp;<version>4.2.2.RELEASE</version>&nbsp;&nbsp;
5.  &nbsp;&nbsp;&nbsp;&nbsp;<!-- 依賴排除 可以排除對commons-logging 的依賴  
6.      <exclusions>  
7.          <exclusion>  
8.              <groupId>commons-logging</groupId>  
9.              <artifactId>commons-logging</artifactId>  
10.          </exclusion>  
11.      </exclusions>  
12.      -->&nbsp;&nbsp;
13.  </dependency>&nbsp;&nbsp;

15.  <!-- 添加對maven-02依賴 -->&nbsp;&nbsp;
16.  <dependency>&nbsp;&nbsp;
17.  &nbsp;&nbsp;&nbsp;&nbsp;<groupid>com.sohu.train</groupid>&nbsp;&nbsp;
18.  &nbsp;&nbsp;&nbsp;&nbsp;<artifactid>maven-02</artifactid>&nbsp;&nbsp;
19.  &nbsp;&nbsp;&nbsp;&nbsp;<version>1.0-SNAPSHORT</version>&nbsp;&nbsp;
20.  </dependency>&nbsp;&nbsp;

  短路優先原則:

         maven-01->spring-test->spring-core->commons-loggings-1.2(依賴深度3)

         maven-01->maven-02->commons-loggings-1.1.1(依賴深度2)

         所以maven01工程依賴的commons-loggings-1.1.1

  maven的依賴特性以及沖突解決是什么

   4.2 pom配置2:

Xml代碼 

1.  <dependency>&nbsp;&nbsp;
2.  &nbsp;&nbsp;&nbsp;&nbsp;<groupid>org.springframework</groupid>&nbsp;&nbsp;
3.  &nbsp;&nbsp;&nbsp;&nbsp;<artifactid>spring-test</artifactid>&nbsp;&nbsp;
4.  &nbsp;&nbsp;&nbsp;&nbsp;<version>4.2.2.RELEASE</version>&nbsp;&nbsp;
5.  &nbsp;&nbsp;&nbsp;&nbsp;<!-- 依賴排除 -->&nbsp;&nbsp;
6.  &nbsp;&nbsp;&nbsp;&nbsp;<exclusions>&nbsp;&nbsp;
7.  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<exclusion>&nbsp;&nbsp;
8.  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<groupid>commons-logging</groupid>&nbsp;&nbsp;
9.  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<artifactid>commons-logging</artifactid>&nbsp;&nbsp;
10.  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</exclusion>&nbsp;&nbsp;
11.  &nbsp;&nbsp;&nbsp;&nbsp;</exclusions>&nbsp;&nbsp;
12.  </dependency>&nbsp;&nbsp;

14.  <!-- 添加對maven-03依賴  -->&nbsp;&nbsp;
15.  <dependency>&nbsp;&nbsp;
16.  &nbsp;&nbsp;&nbsp;&nbsp;<groupid>com.sohu.train</groupid>&nbsp;&nbsp;
17.  &nbsp;&nbsp;&nbsp;&nbsp;<artifactid>maven-03</artifactid>&nbsp;&nbsp;
18.  &nbsp;&nbsp;&nbsp;&nbsp;<version>0.0.1-SNAPSHOT</version>&nbsp;&nbsp;
19.  </dependency>&nbsp;&nbsp;

21.  <!-- 添加對maven-02依賴 -->&nbsp;&nbsp;
22.  <dependency>&nbsp;&nbsp;
23.  &nbsp;&nbsp;&nbsp;&nbsp;<groupid>com.sohu.train</groupid>&nbsp;&nbsp;
24.  &nbsp;&nbsp;&nbsp;&nbsp;<artifactid>maven-02</artifactid>&nbsp;&nbsp;
25.  &nbsp;&nbsp;&nbsp;&nbsp;<version>1.0-SNAPSHORT</version>&nbsp;&nbsp;
26.  </dependency>&nbsp;&nbsp;

   先引用先優先的原則:

         maven-01->spring-test->spring-core

         maven-01->maven-02->commons-logging-1.1.1

         maven-01->maven-03->commons-logging-1.1.3

 如果pom先依賴maven-02則 依賴commons-logging-1.1.1 依賴;反之,如果pom先依賴maven-03則 依賴commons-loen

關于maven的依賴特性以及沖突解決是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

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

AI

于都县| 新巴尔虎右旗| 托克逊县| 游戏| 芮城县| 满洲里市| 西乌珠穆沁旗| 濮阳县| 桐乡市| 葫芦岛市| 边坝县| 乐清市| 永济市| 平罗县| 宣城市| 崇礼县| 枣庄市| 宝鸡市| 阜新| 鄂托克旗| 郁南县| 红河县| 宝坻区| 延津县| 海丰县| 昌宁县| 道孚县| 澄江县| 萨嘎县| 澄迈县| 合阳县| 东莞市| 霞浦县| 隆化县| 六枝特区| 舞钢市| 渑池县| 康平县| 城固县| 宁化县| 思茅市|