[TOC]
# 继承
多次使用到的依赖,比如:单元测试,没有必要在所有的项目中都引用一下,此时就可以采用继承的方式来实现,先来一个父级的POM.XML,然后再继承此POM.XML。
1. packaging 改为pom。
2. dependencyManagement 中并不提取依赖。
3. 父类parent中的main和test没有意义,可以删除。
父类pom:
```
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>3.8.1</junit.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
```
> 可以在pom.xml文件中定义Properties属性,自定义标签。
然后在相应位置引用的形式是${标签名}即可。
子类pom:
```
<parent>
<groupId>com.xxx</groupId>
<artifactId>xxx-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
```
# 聚合
对于多个项目一起编译,这种方式叫做聚合。
还以前面的ABC三个项目作为例子说明;
三者设定了传递依赖关系,并且经过配置,但是此时不想一个一个的由高到低的编译/打包/安装,此时可以在A的pom.xml文件的根目录中加入如下元素标签,只需要对A进行打包安装即可实现对B和C的打包和安装,这种一同编译安装的方式,就叫做聚合。
```
<modules>
<module>../C</module>
<module>../B</module>
<module>../A</module>
</modules>
```