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>commons-logging</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