maven依赖传递性依赖原则

Posted 素然止步

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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配置多个项目之间的依赖

 

 

 

 

 

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

 

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

  a.路径最短优先原则

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

 

 

 

 

 

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

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

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

以上是关于maven依赖传递性依赖原则的主要内容,如果未能解决你的问题,请参考以下文章

Maven依赖的传递性

maven的仓库配置指定jdk编译版本相关编译命令简介scope依赖的范围以及依赖的传递性

Maven依赖jar包版本冲突解决方案

maven 实战

04-Maven依赖管理

[Maven实战]传递性依赖