Maven_6_依赖传递的两个原则

 

 

1.第一声明者优先原则

谁先在pom.xml中申明,就用谁的。跟坐标代码的顺序有关

测试:

添加struts2-spring-plugin(2.3.24)在前,spring-context(4.2.3.RELEASE)在后。

 Maven_6_依赖传递的两个原则_第1张图片

结果

 Maven_6_依赖传递的两个原则_第2张图片

如果将上边struts-spring-pluginsspring-context顺序颠倒,系统将导入spring-beans-4.2.3。

 Maven_6_依赖传递的两个原则_第3张图片

结果:

 Maven_6_依赖传递的两个原则_第4张图片

分析:

由于spring-context在前边以spring-context依赖的spring-beans-4.2.3为准,所以最终spring-beans-4.2.3添加到了工程中。

 

2.路径近者优先原则

struts2-spring-plugin(2.3.24)spring-context(4.2.3.RELEASE)都会添加spring-beans的依赖。Strut2-spring-plugin会引入spring-beans.3.0.5, spring-context会引入spring-beans.4.2.3。如果这时我们直接加入新的依赖叫spring-beans.4.2.4.RELEASE

 Maven_6_依赖传递的两个原则_第5张图片

结果:

 Maven_6_依赖传递的两个原则_第6张图片

分析:系统中如果要引入spring-beans,可以有以下方法

Ø 通过引入struts2-spring-plugin,它会引入spring-beans.3.0.5的版本。需要经过的路径为2个节点

Ø 通过引入srping-beans-4.2.3,它会引入spring-beans.4.2.3的版本,需要经过的路径为2个节点

Ø 如果直接引入spring-beans-4.2.4,只需要经过1个节点

因此不管spring-beans.4.2.4的位置在哪,系统始终都是引入spring-beans.4.2.4的版本。

你可能感兴趣的:(Maven_6_依赖传递的两个原则)