- 第一原则:最短路径优先原则
-
“最短路径优先”意味着项目依赖关系树中路径最短的版本会被使用。例如,假设A、B、C之间的依赖关系是A->B->C->D(2.0)和A->E->D(1.0),那么D(1.0)会被使用,因为A通过E到D的路径更短。
-
- 第二原则:最先声明原则
- 依赖路径长度是一样的时候,第一原则不能解决所有问题,比如依赖关系:A–>B–>Y(1.0),A–>C–>Y(2.0),Y(1.0)和Y(2.0)的依赖路径长度是一样的,都为2。那么到底谁会被解析使用呢?为了尽可能避免构建的不确定性,maven定义了依赖调用的第二原则:第一声明者优先。即在依赖路径长度相等的前提下,在POM中依赖声明的顺序决定了谁会被解析使用。顺序最靠前的那个依赖优先。