maven-jar依赖问题整理
依赖传递
只有<scope>为compile时可以传递依赖
A.jar依赖于B.jar,B.jar依赖于C.jar,要使A.jar 也依赖 C.jar ,C.jar的scope必须是compile(默认就是compile)
依赖原则
最短路径优先原则
依赖同一个X.jar,路径长度不同,如
A->B->C->X(1.0) 路径长度为3
A->D->X(2.0) 路径长度为2
此时maven使用最短路径优先原则,使用使用X(2.0)
第一声明优先原则
路径长度相同,且X.jar在不同的pom.xml中:
A->B->X(1.0)
A->D->X(2.0)
以上在A的pom文件中,假设B在D之前声明依赖,则会使用X(1.0)
如果是在同一个pom中,重复声明两个相同的jar版本,使用的是覆盖原则,后者将覆盖前者版本(不过一般没这么无聊)