Maven简单入门(三)
聚合
- 聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
- 聚合工程:通常是一个不具有业务功能的“空”工程(有且仅有一个pom文件)
- 作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
- 当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题
- 聚合工程的使用
- 创建空工程作为聚合工程
- 将聚合工程的打包方式设置成
pom
- 在聚合工程的pom文件中添加
<modules>
子标签,在其中通过<module>
标签标注需要管理的模块相对路径 - 当需要对项目进行更新时在聚合项目中运行Maven的compile脚本即可
注意:相对路径中使用..
表示返回项目的上一级目录
当运行聚合项目中的compile脚本时,Maven会根据modules
子标签中项目的依赖关系的顺序进行项目的更新构建
继承
- 概念:继承描述的时两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
- 作用:
- 简化配置
- 减少版本冲突
通常继承用工程和聚合工程会使用同一个工程。
- 继承的使用
- 在父工程中将打包方式设置为pom
- 在需要继承的子工程中加入
<parent>
标签 - 在
parent
标签中加入gav子标签注明父工程坐标 - 在
parent
标签中加入<relativePath>
标签注明父工程路径 - 在父工程的
<dependencies>
标签中添加子工程公用依赖 - 在父工程的
<dependencyManagement>
标签中添加子工程可选依赖 - 在子工程的
<dependencies>
标签中使用可选依赖时仅标注组名和id,不标注版本即可
聚合与继承的区别
- 作用:
- 聚合用于快速构建项目
- 继承用于快速配置
- 相同点:
- 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
- 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
属性
- 为了在父工程中方便的进行统一的版本管理避免出错,可以使用属性
- 在pom文件中添加
<properties>
标签 - 在
<properties>
标签中添加子标签,标签名即为属性名,标签内数据即为属性的值 - 在需要使用的地方使用
${属性名}
进行引用即可
如何在资源文件中引用pom文件中定义的属性
- 定义属性
- 在资源文件中使用形如
${属性名}
的方式引用属性 - 开启资源文件目录加载属性的过滤器
<build>
<resources>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true<filtering>
</resources>
</build>
其他属性
- 属性列表
- 自定义属性
- 内置属性
- Setting属性
- Java系统属性
- 环境变量属性
之前使用的${project.basedir}
就是maven的内置属性,表示项目根目录
可以在maven安装路径运行mvn help:system
指令查看Java系统属性和环境变量属性。
版本管理
- 工程版本:
- SNAPSHOT(快照版本)
- 项目开发过程中灵使输出的版本,称为快照版本
- 快照版本会随着开发的进展不断更新
- RELEASE(发布版本)
- 项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构建文件是稳定的,即便进行功能的后续开发,也不会该百年当前发布版本的内容,这种版本称为发布版本
- SNAPSHOT(快照版本)
- 发布版本
- alpha版
- beta版
- 纯数字版