除了依赖关系,继承和聚合关系也是 Maven 项目中很常用的两种关系。
继承关系
- 在子项目中,使用
<parent>
指定父项目;
- 项目能继承父项目的一些配置(属性,依赖等);
- 一般用于多项目共享父配置。
- 特别注意
relativePath
元素。虽非必填,但可以用作 Maven 的一个指示符,以在搜索本地和远程仓库之前首先搜索此路径,以达到优先使用本地父项目的目的(本地开发过程中有时我们会修改本地父项目的配置,例如修改依赖版本号)。
父项目配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <project> <modelVersion>4.0.0</modelVersion>
<groupId>test</groupId> <artifactId>parent</artifactId> <version>1.0</version> <packaging>pom</packaging>
<properties...> <dependencyManagement...> <dependencies...> <build...> <distributionManagement...> <repositories...> <pluginRepositories...> </project>
|
子项目配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <project> <modelVersion>4.0.0</modelVersion>
<parent> <groupId>test</groupId> <artifactId>parent</artifactId> <version>1.0</version> <relativePath>../parent</relativePath> </parent>
<groupId>test</groupId> <artifactId>child-a</artifactId> <version>1.0</version> </project>
|
聚合关系
- 在父项目中,使用
<modules>
指定子项目;
- 在父项目中进行构建,会同时构建全部子项目;
- 一般用于批量管理一个项目的多个模块;
父项目配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <project> <modelVersion>4.0.0</modelVersion> <groupId>test</groupId> <artifactId>parent</artifactId> <version>1.0</version> <packaging>pom</packaging> <modules> <module>child-a</module> <module>child-a</module> </modules> </project>
|