maven依赖传递性、依赖原则

maven的依赖传递:

  A.jar->B.jar->C.jar

  要使 A.jar ->C.jar:当且仅当 B.jar 依赖于C.jar的范围是compile,如果B依赖于C的范围不是compile,那么A依赖不了C

举个例子:

这里创建两个项目,HelloWorlds和HelloWorld2,HelloWorld2配置了junit单元测试依赖,如果HelloWorlds想依赖HelloWorld2中的junit,那么HelloWorld2和junit的依赖范围必须是compile,否则依赖不了。(注意:项目之间互相依赖还需要配置依赖,详细:maven配置多个项目之间的依赖)

maven依赖传递性、依赖原则_第1张图片

 

 maven依赖传递性、依赖原则_第2张图片

 

 maven依赖传递性、依赖原则_第3张图片

 

 不过不建议修改所配置依赖的默认的依赖范围,会出现jar包冲突,会报空指针异常。

 

依赖原则:为了防止依赖之间的冲突

  a.路径最短优先原则

  b.路径长度相同:
    i.在同一个pom.xml文件中有2个相同的依赖(覆盖):后面声明的依赖 会覆盖前面声明的依赖 (严禁使用本情况,严禁在同一个pom中声明2个版本不同的依赖)
    ii.如果是不同的 pom.xml中有2个相同的依赖(优先):则先声明的依赖 ,会覆盖后声明的依赖

 

 

 

 maven依赖传递性、依赖原则_第4张图片

 

注意:只要pom发生了改动,都应该项目右键,选择maven>update project

传递依赖需要确保依赖范围为compile,而且修改默认的依赖范围会出现冲突,所以不建议修改默认的依赖范围

推荐使用依赖继承,详细:maven依赖继承。

你可能感兴趣的