1. 程式人生 > >maven中的依賴衝突的解決

maven中的依賴衝突的解決

1.依賴衝突的解決

  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:依賴樹

 4).衝突解決辦法:

   4.1  pom配置1:

Xml程式碼 收藏程式碼
  1. <dependency>
  2.     <groupId>org.springframework</groupId>
  3.     <artifactId>spring-test</artifactId>
  4.     <version>4.2.2.RELEASE</version>
  5.     <!-- 依賴排除 可以排除對commons-logging 的依賴  
  6.     <exclusions>
  7.         <exclusion>
  8.             <groupId
    >commons-logging</groupId>
  9.             <artifactId>commons-logging</artifactId>
  10.         </exclusion>
  11.     </exclusions>
  12.     -->
  13. </dependency>
  14. <!-- 新增對maven-02依賴 -->
  15. <dependency>
  16.     <groupId>com.sohu.train</groupId>
  17.     <artifactId>maven-02</artifactId>
  18.     <version>1.0-SNAPSHORT</version>
  19. </dependency>

  短路優先原則:

         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

詳情參考:http://yanan0628.iteye.com/blog/2270409