# Maven 多模块(聚合)
Maven 继承(父子工程)的目的为了配置文件的复用和配置信息的统一管理;
Maven 聚合(多模块工程)目的是项目功能上的拆分;
Maven 聚合(多模块工程)功能通常会和继承功能一起使用。这样,多模块工程看起来就像是父子工程的升级版。
Maven 聚合功能也可以脱离继承单独使用。
例如,在 log4j1 时代,log4j 项目的『产出』只有一个 log4j.jar 包。到了 log4j2 时代,log4j 项目的『产出』就变成了两个包:log4j-api 和 log4j-core 。
很明显,就是两部分相对独立的代码分别打成了两个包,而并不像以前那样打成一个包。
由于 Maven 多模块项目是父子项目的一种高级形式,因此,多模块项目也是有一个父模块包含一个或多个子模块,不过有几点不同:
多模块项目中,子项目通常是在父项目『里面』的。
多模块项目中,父项目中会『多出来』一个 <modules> 元素。
<project ...> <modelVersion>4.0.0</modelVersion> <groupId>org.codehaus.mojo</groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <packaging>pom</packaging> <modules> <module>child1-module</module> <module>child2-module</module> <module>...</module> <module>...</module> <module>...</module> </modules> ... </project>