聚合
在POM中配置
<modules>
<module>child1</module>
<module>child2</module>
</modules>
<packaging>pom</packaging>
对于聚合模块来说,其打包方式必须为pom
继承
- 子模块声明<parent></parent>属性。指定坐标groupId,artifactId,version,另外需要指定relativePath 例如<relativePath>../parent/pom.xml</relativePath> ,其默认值为 ../pom.xml
- 子模块可以继承父模块的部分属性:
- groupId
- version
- description
- organization :项目的组织信息
- inceptionYear :项目的创始年份
- url : 项目的url地址
- developers :项目的开发这信息
- contributors :项目的贡献者信息
- distributionManagement :项目的部署配置
- issueManagement : 项目的缺陷跟踪系统信息
- ciManagement :项目的持续继承系统信息
- scm : 项目的版本控制系统信息
- mailingLists: 项目的邮件列表信息
- properties:自定义的Maven属性。
- dependencies : 项目的依赖配置
- dependencyManagement:项目的依赖管理配置
- repositories:项目的仓库配置
- build:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等。
- reporting:包括项目的报告输出目录配置、报告插件配置等。
dependencyManagenment 元素下的依赖声明不会引入实际的依赖,不过他能约束dependencies下的依赖使用。比如在其中配置了某个依赖的版本,子模块继承之后在使用这个模块就不需要声明版本。
import依赖范围 ,旨在dependencyManagement元素下才有效果。作用时将目标POM中的dependencyManagement配置导入并合并到当前POM的denpendencyManagement元素中。
ex.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.wang.ex</groupId>
<artifactId>ex-parent</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
插件管理,与依赖管理相似,属性为 pluginManagement,父模块配置完,子模块只需要groupId和artifactId即可引用。
一些默认目录
- 源码目录为 src/main/java
- 编译输出目录为 target/classes
- 打包方式为 jar
- 包输出目录为 target/
反应堆
- 在一个多模块的Maven项目中,反应堆是指所有模块组成的一个构建结构。
裁剪反应堆
- -am , --also-make 同时构建所列模块的依赖模块
- -amd , --also-make-dependents 同时构建依赖于所列模块的模块
- -pl , --projects <arg> 构建指定的模块,魔窟案件用逗号分隔
- -rf , --resume-from <arg> 从指定的模块回复反应堆
可以使用-pl选项指定构建某几个模块:(email,persist)
mvn clean install -pl account-email,account-persist
使用-am选项可以同时构建所列模块的依赖模块:(parent email)
mvn clean install -pl account -email -am
由于-amd选项可以同时构建依赖于所列模块的模块:(parent,email,persist)
mvn clean install -pl account-parent -amd
使用-rf选项可以在完整的反应堆构建顺序技术上指定从哪个模块开始构建。
mvn clean install -rf account-email
完整的反应堆构建顺序中,account-email位于第三,它之后只有account-persist,因此会得到如下的裁剪反应堆:
email,persist