Maven-继承与聚合
Maven-继承与聚合
继承
Maven不支持多继承,一个Maven项目中只能继承一个父工程,但是Maven可以通过多重继承来达到多继承的效果。
- 创建父工程,在
pom.xml
中声明父工程的打包方式为pom(不设置打包方式默认为jar)。父工程或聚合工程模块中不写代码,仅进行依赖管理,且打包方式应设为pom。
<packaging>pom</packaging>
- 在父工程中配置各个工程共有的依赖,子工程会自动继承父工程的依赖。
- 在子工程的
pom.xml
中通过<parent></parent>
标签声明其父工程,配置继承关系。
<parent><groupId>...</groupId><artifactId>...</artifactId><version>...</version><relativePath>....</relativePath><!--relativePath标签用来指定父工程的pom文件的相对位置(如果不指定,将从本地仓库/远程仓库查找该工程) -->
</parent>
自定义属性
当然我们也可以在pom.xml文件中通过<properties>
标签来自定义属性并通过${...}
的方式引用自定义标签内的属性。
- 自定义属性
<properties><!--自定义属性lombock.version--><lombok.version>1.18.30</lombok.version>
</properties>
- 引用自定义属性
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><!--通过${}引用自定义属性lombock.version-->
</dependency>
版本锁定
我们可以在父工程的pom文件中通过标签来统一管理依赖的版本。
<!--统一管理依赖版本-->
<dependencyManagement><dependencies><dependency><groupId>...</groupId><artifactId>...</artifactId><version>...</version></dependency></dependencies>
</dependencyManagement>
该标签并不会将对应的依赖直接引入,而是只对依赖的版本进行统一管理,所以子工程在使用这个依赖的时候,仍需要引入对应依赖,只是可以不指定版本。
聚合
通过maven提供的聚合功能,我们能够一件构建项目,而不需要再去考虑各个模块打包间的依赖关系,maven的聚合功能会自动根据当前聚合工程中各个子模块的依赖关系先后进行打包操作。
聚合工程与父工程一致只有一个pom文件,并且需将打包方式也设置为pom
,因此常将两个工程进行合并。需要在聚合工程(也就是父工程中)通过<moudules>
标签将需要聚合的子模块聚合。
<!-- 聚合其他模块 -->
<modules><module>...</module><module>...</module><module>...</module><!-- <module> 标签中填写需要聚合模块的位置 -->
</modules>