一个多模块项目经过一个父POM 引用一个或多个子模块来定义。父项目,经过如下配置,将子项目关联。html
[xhtml] view plaincopyweb
<packaging>pom</packaging> app
<modules> eclipse
<module>simple-weather</module> webapp
<module>simple-webapp</module> maven
</modules> spa
其中值得注意的是<packaging>pom</packaging>这个父项目不像以前的项目那样建立一个JAR 或者一个WAR,它仅仅是一个引用其它Maven 项目的POM。pom.xml 中下一部分列出了项目的子模块。这些模块在modules元素中定义,每一个modules 元素对应了一个simple-parent/目录下的子目录。Maven知道去这些子目录寻找pom.xml 文件,而且,在构建的simp-parent 的时候,它会将这些子模块包含到要构建的项目中。.net
固然,仅仅在父项目,配置子项目是不可以真正实现关联的,由于,这毕竟须要子项目的赞成,故!子项目中须要配置:orm
[xhtml] view plaincopyxml
<parent>
<groupId>org.sonatype.mavenbook.ch06</groupId>
<artifactId>simple-parent</artifactId>
<version>1.0</version>
</parent>
如今,经过父pom.xml将2个子项目进行了关联,那么咱们须要从simple-parent 项目运行mvn clean install 命令,将2个子项目打包,编译为一个项目!
当Maven 执行一个带有子模块的项目的时候,Maven 首先载入父POM,而后定位全部的子模块POM。Maven 而后将全部这些项目的POM 放入到一个称为Maven 反应堆(Reactor)的东西中,由它负责分析模块之间的依赖关系。这个反应堆处理组件的排序,以确保相互独立的模块能以适当的顺序被编译和安装。
当,经过父pom.xml进行完成多个子项目的关联后,咱们能够像前几章同样,分别进入某个单独的模块,进行运行,以移动程序!
注意:子项目的文件,位于父项目pom.xml同级,也就是,子项目的pom.xml位于父pom.xml的下一级文件中!