Maven项目引入两个jar包,groupId和artifactId相同,version不同。
<dependencies>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
根据Maven的依赖规则,应该是前面覆盖后面的,可是为什么最终依赖的是1.2,而不是1.4?
因为commons-dbcp的声明被覆盖了。
你理解的前面的覆盖后面其实是间接依赖的原则。
A -> Y(1.0),B -> Y(2.0),Y(1.0)和Y(2.0)的依赖路径长度相同,如果A的声明在B之前,那么Y(1.0)会被解析使用。