现实中可能存在这样的情况,A->B->C->Y(1.0),A->D->Y(2.0),此时Y出现了2个版本,1.0和2.0,此时maven会选择Y的哪个版本?
解决这种问题,maven有2个原则:
路径最近原则:
上面A->B->C->Y(1.0),A->D->Y(2.0)
,Y的2.0版本距离A更近一些,所以maven会选择2.0。
最先声明原则:
如果出现了路径一样的,此时会看A的pom.xml中所依赖的B、D在dependencies
中的位置,谁的声明在最前面,就以谁的为主,比如A->B
在前面,那么最后Y会选择1.0版本。
结论:路径最近原则、最先声明原则