桥山之巅,姬水之畔

Maven解析规则理解

2020.02.29

maven 依赖解析规则

Rule 1: Nearest First(最近优先)
Rule 2: If distance is the same, the one who declare first wins(其次是先引入优先)

如何看依赖的顺序:就是 dependency 的顺序

依赖场景

Project A依赖B 2.1.3和C 1.2.0版本;
B 2.1.3依赖D 1.1.6版本;
C 1.2.0依赖D 1.3.0版本。
则 Project A对于D的依赖就出现冲突,按照maven dependency mediation的规则,最后生效的是1.1.6版本(就近原则)。
在这种情况下,由于C依赖1.3.0版本的D,但是在运行时生效的确是1.1.6版本,所以在运行时很容易产生问题,如 NoSuchMethodError, ClassNotFoundException等。