一、为什么要聚合?
- 定义:我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可以独立的编译和运行每个模块,但是随着项目的不断变大和复杂化,我们期望能够使用简单的操作来完成编译等工作,这时Maven给出了聚合的配置方式。所谓聚合,顾名思义,就是把多个模块或项目聚合到一起,我们可以建立一个专门负责聚合工作的Maven project --- aggregator。
- 注意:
- 该aggregator本身也做为一个Maven项目,它必须有自己的POM它的打包方式必须为: pom
- 它的打包方式必须为: pom
- 引入了新的元素:modules---module,每个module的值都是一个当前POM的相对目录
- 聚合模块的内容仅仅是一个pom.xml文件,它不包含src/main/、src/test/java等目录,因为它只是用来帮助其它模块构建的工具,本身并没有实质的内容。
-
案例:
结果:
二、继承
-
为什么要继承?
-
- 我们在项目开发的过程中,可能多个模块独立开发,但是多个模块可能依赖相同的元素,比如说每个模块都需要Junit,使用的时候,其核心jar也必须都被引入,在编译的时候,maven-compiler-plugin插件也要被引入。继承是解决包冲突的解决方法之一。
-
如何配置:
- <packaging>: 作为父模块的POM,其打包类型也必须为POM
- 结构:父模块只是为了帮助我们消除重复,所以它也不需要src/main/java、src/test/java等目录
- 新的元素:<parent> , 它是被用在子模块中的
- 子模块省略groupId和version: 使用了继承的子模块中可以不声明groupId和version, 子模块将隐式的继承父模块的这两个元素
-
案例:
- maven_parent/pom.xml:
4.0.0 com.shyroke maven_parent 0.0.1-SNAPSHOT pom maven_parent http://maven.apache.org UTF-8 junit junit 4.12
- maven05/pom.xml:
4.0.0 com.shyroke maven_parent 0.0.1-SNAPSHOT maven05 2.0.1-SNAPSHOT jar maven05 http://maven.apache.org UTF-8 junit junit test
结果: