(五)聚合与继承
1 聚合
1.1 简述
使用聚合可以管理多个子模块,其目的是为了方便构建项目。
1.2 结构
(1)聚合模块只有一个pom文件,与子模块是并列或包含关系。
(2)对于聚合模块,其打包方式packaging的值必须为pom,否则无法构建。
(3)对于各个子模块,要求模块的groupId与聚合模块的groupId一致,version也一致,artifactId为子模块的名称。
2 继承
2.1 简述
使用继承特性可以实现一处声明,多处使用,其目的是为了消除重复配置。
2.2 父模块结构
同聚合模块pom的(1)(2)。
2.3 子模块结构
子模块在继承父模块时,除了使用parent标签包裹父模块的坐标外,还需要用relativePath指出父模块的pom文件的位置,默认父pom文件在上一层目录,仅仅是这种情况下可以省略relativePath。
当项目构建时,Maven首先会根据relativePath检查父pom,如果找不到,再从本地仓库中根据坐标查找pom文件继承后执行构建。其中,子模块可继承父模块的主要元素包括:
1)groupId
2)version
3)properties 自定义的Maven属性
4)dependencies 项目的依赖配置
5)build 包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等。
2.4 依赖管理和插件管理
在父模块中配置依赖时通过dependencyManagement统一管理,这样子模块在使用时只需要给出依赖的groupId和artifactId,版本和scope全部继承自父模块,从而实现了版本的统一管理,并且对于父模块中的依赖也可选择继承。
插件管理的思想和方法完全同依赖管理,只是采用pluginManagement管理所有的插件。
3 构建顺序
在一个多模块的Maven项目中,maven按序读取pom,如果该pom没有依赖模块,那么就构建该模块,否则就先构建其依赖模块,如果该依赖还依赖其他模块,则进一步先构建依赖的依赖。在构建过程中,如果某依赖模块已经完成构建则不会再重复构建。
有疑问欢迎留言