​​1.Maven-简介​ 2.Maven-安装和配置​ 3.Maven-POM文件说明​ 4.Maven-坐标​ 5.Maven-依赖详解​  6.Maven-仓库​ 7.Maven-生命周期和插件​    8.Maven-聚合​ 9.Maven-继承和反应堆​ 10.Maven-使用NEXUS创建私服​   11.Mavne-配置从NEXUS下载构件和为项目配置独立仓库​   12.Maven-使用Hudson进行持续集成及系统配置​  13.Maven-创建Hudson任务​  14.Maven-Hudson监视任务、用户管理、工作目录

8 Maven-聚合


Maven的聚合特性能够把项目的各个模块聚合在一起构建,而Maven的继承特性则能帮助抽取各模块相同的依赖和插件等配置,在简化POM的同时,还能保证各个模块配置的一致性。



8.1 聚合

8 Maven-聚合_maven聚合配置

1) 对于聚合模块来说,其打包方式packaging的值必须为pom,否则就无法构建。


2) POM的name字段是为了给项目提供一个更容易阅读的名字。

3) modules,这是实现聚合的最核心的配置。用户可以通过在一个打包方式为pom的Maven项目中声明任意数量的module元素来实现     模块的聚合。每个module的值都是一个当前POM的相对目录。如下图:

8 Maven-聚合_聚合_02


为了方便用户构建项目,通常聚合模块放在项目的最顶层,其他模块则作为聚合模块的子目录存在,这样用户得到源码的时候,第一眼发现的就是聚合模块的POM,不用从多模块中去寻找聚合模块来构建整个项目。

备注:聚合模块仅仅是帮助聚合其他模块构建的工具,它本身并无实质的内容。


聚合模块与其他模块的目录结构并非一定要是父子关系,如果使用平行目录结构,聚合模块的POM也需要做相应的修改,以指向正确的模块目录,如下图:

8 Maven-聚合_maven聚合_03



可以执行 mvn clean install命令来感受一下,如下图:

8 Maven-聚合_maven聚合_04

8 Maven-聚合_maven聚合_05

分析:


1)Maven会首先解析聚合模块的POM、分析要构建的模块、并计算出一个反应堆构建顺序,然后根据这个顺序依次构建各个模块。反应堆是所有模块组成的一个构件结构。

2)执行命令后,在构建正确的情况下能看到各模块的名称,而不是artifactId,这也解释了为什么要在POM中配置合力的name字段,其目的是让Maven的构建输出更清晰。输出的最后是一个项目的构建小报告,包括各个模块构建成功与否、花费的时间,以及整个构建花费的时间、使用的内存等。