maven 多模块项目关系

前言

  • 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

发布了284 篇原创文章 · 获赞 54 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/sayyy/article/details/104236094