继承
一个Maven项目可以继承自另一个Maven项目。
场景:多个子项目中会使用相同的依赖或插件,此时可以把相同的配置抽取到一个父项目中进行统一管理,保持一致性。
步骤:
- 将父工程的packaging标签修改为pom。packaging标签用于指定项目的打包方式。
- 在子项目中引用父项目,添加parent标签,写入父项目坐标用于指定父项目,并添加relativePath标签指定父项目的pom.xml文件的相对物理路径
dependencyManagement标签用于管理依赖,表示父项目只进行依赖的管理(如版本控制),默认不会被子项目继承。 - 在父工程种配置dependencyManagement
- 在子项目中引入依赖(仅标注groupId+artifactId
聚合
将多个子项目添加到一个父项目中,然后通过对父项目进行操作,从而实现对所有聚合子项目的操作
在父项目中添加modules标签用于聚合子项目,指定子项目的根目录
依赖
项目C——>项目B——项目A
如果项目C依赖于项目B,项目B依赖于项目A,则项目C同样依赖于项目A。
配置依赖关系:child03——>child02——>child01
在pom文件地dependency标签中写入被依赖的工程。
控制依赖的传递
并不是所有的依赖都会被传递
- scope为compile的依赖会被传递。
- scope为test的依赖不会被传递。
- 配置optional为true的依赖不会被传递
不会出现jar包的冲突
使用maven不会jar包冲突,通过两个原则实现:
- 就近原则。(选择就近版本)
- 优先定义原则。
不想传递的依赖
方式1:在依赖的配置中配置不允许传递的依赖
方式2:在当前项目中配置不接收传递的特定依赖
使用exclusions标签。