前言
- maven 3.5.0
maven 多模块项目关系
maven 多模块项目关系有2种,分别为:继承关系和聚合关系。
继承关系
具有继承关系的多模块项目结构如下:
my-project-inheritance
|-- my-module
| `-- pom.xml
`-- pom.xml
my-project-inheritance简称父项目,my-module简称子项目。
父项目的POM文件(my-project-inheritance/pom.xml)内容:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-project-inheritance</artifactId>
<version>1</version>
</project>
子项目的POM文件(my-project-inheritance/my-module/pom.xml)内容:
<project>
<parent>
<groupId>com.mycompany.app</groupId>
<artifactId>my-project-inheritance</artifactId>
<version>1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-module</artifactId>
<version>1</version>
</project>
继承关系下,子项目可以继承父项目POM的某些属性。比如 groupId、version属性。因此,子项目可以利用继承关系将POM精简如下:
<project>
<parent>
<groupId>com.mycompany.app</groupId>
<artifactId>my-project-inheritance</artifactId>
<version>1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>my-module</artifactId>
</project>
聚合关系
具有聚合关系的多模块项目结构如下:
my-project-aggregation
|-- my-module
| `-- pom.xml
`-- pom.xml
my-project-aggregation简称父项目,my-module简称子项目。
父项目的POM文件(my-project-aggregation/pom.xml)内容:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-project-aggregation</artifactId>
<version>1</version>
<modules>
<module>my-module</module>
</modules>
</project>
子项目的POM文件(my-project-aggregation/my-module/pom.xml)内容:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-module</artifactId>
<version>1</version>
</project>
聚合关系下,在父项目上调用maven命令时,也会同步在子项目上执行。比如在父项目上调用命令 mvn package
, 也会同步在子项目上调用命令 mvn package
。
继承关系和聚合关系
如果多个Maven项目都有相似的配置,则可以使用继承关系。提取那些相似的配置到父项目。
如果多个Maven项目需要一起构建或处理,则可以使用聚合关系。在父项目中进行构建或处理即可。
多数情况下,多模块项目同时具有继承关系和聚合关系。
参考
http://maven.apache.org/guides/introduction/introduction-to-the-pom.html