maven依赖传递(传递规则)、继承(继承规则)
一、父子项目继承1.1、dependencies如果父项目pom中使用的是<dependencies>....</dependencies>则子项目pom会自动使用pom中的jar包。1.2、dependencyManagement如果父项目pom使用的是<dependencyManagement><dependencies>....</dep
一、父子项目继承
1.1、dependencies
如果父项目pom中使用的是
<dependencies>
....
</dependencies>
则子项目pom会自动使用pom中的jar包。
1.2、dependencyManagement
如果父项目pom使用的是
<dependencyManagement>
<dependencies>
....
</dependencies>
</dependencyManagement>
则子项目pom不会自动使用父pom中的jar包,
如果需要使用,就要给出groupId和artifactId,无需给出version
<dependencyManagement>的作用是统一管理版本信息
在子工程中使用时,还是需要引入坐标的,但是不需要给出version
pom文件中,当子项目中引用一个依赖而不用显示的列出版本号,
Maven会沿着父子层次向上找,直到找到一个拥有<dependencyManagement>元素的项目,然后它就会使用在这个<dependencyManagement>元素中指定的版本号;若找不到则报错。
二、依赖传递规则
2.1、传递依赖
当存在传递依赖的情况时,主工程对间接依赖的jar可以访问吗?
例如:A.jar依赖于B.jar,而B.jar依赖于C.jar,那么要怎么修改配置文件,才会让A.jar 也依赖 C.jar 呢?
这要看传递依赖的jar包引入时的依赖范围——只有依赖范围为compile时可以访问
即 要使A.jar 依赖于C.jar 当且仅当C.jar的范围是compile
2.2、依赖原则
依赖原则目的:防止jar包的冲突
为了避免造成依赖重复,需要选择一个依赖路径
2.2.1、路径最短优先原则
即优先选择传递路径最短的依赖包
2.2.2、路径长度相同
路径长度相同的情况下,又可以分为是否有在同一个pom.xml两种情况
- 覆盖
如果在同一pom.xml文件中有2个相同的依赖;后面声明的会覆盖前面的依赖
但这里要说严禁使用本情况,严禁在同一个pom中声明两个不同的依赖 - 优先
如果是在不同pom.xml中有2个相同的依赖;则先声明的依赖,会覆盖后面声明的依赖
暂时添加这些,以后再补充
更多推荐


所有评论(0)