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:
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>4.2.2.RELEASE</version>
- <!-- 依賴排除 可以排除對commons-logging 的依賴
- <exclusions>
- <exclusion>
-
<groupId
- <artifactId>commons-logging</artifactId>
- </exclusion>
- </exclusions>
- -->
- </dependency>
- <!-- 新增對maven-02依賴 -->
- <dependency>
- <groupId>com.sohu.train</groupId>
- <artifactId>maven-02</artifactId>
- <version>1.0-SNAPSHORT</version>
- </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