maven多模块使用,父模块(使用<modules>,<packaging>为pom),子模块(使用<parent>)
一个多模块项目通过一个父POM 引用一个或多个子模块来定义。父项目,通过以下配置,将子项目关联。
<groupId>org.sonatype.mavenbook.ch06</groupId>
<artifactId>simple-parent</artifactId>
<packaging>pom</packaging>
<description>描述文字</description>
<version>0.0.1-SNAPSHOT</version>
<name>${project.artifactId}</name>
<modules>
<module>simple-weather</module>
<module>simple-webapp</module>
</modules>
其中,值得注意的是<packaging>pom</packaging>这个父项目仅仅是一个引用其它Maven 项目的POM,而modules下列出了项目的子模块。每个module元素对应了一个simple-parent目录下的子目录,Maven知道去哪些子目录寻找pom.xml 文件,并且,在构建的simp-parent 的时候,它会将这些子模块包含到要构建的项目中。不仅需要在父项目中配置如上配置,子项目也需要配置,以实现真正的关联。
<parent>
<groupId>org.sonatype.mavenbook.ch06</groupId>
<artifactId>simple-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>simple-parent-biz</artifactId>
<packaging>jar</packaging>
<description>描述</description>
现在,通过父pom.xml将2个子项目进行了关联,那么我们需要从simple-parent 项目运行mvn clean compile package 命令,将2个子项目打包,编译为一个项目!
当Maven 执行一个带有子模块的项目的时候,Maven 首先载入父POM,然后定位所有的子模块POM。然后Maven 将所有这些项目的POM 放入到一个称为Maven 反应堆(Reactor)的东西中,由它负责分析模块之间的依赖关系。这个反应堆处理组件的排序,以确保相互独立的模块能以适当的顺序被编译和安装。
通过父pom.xml对各子模块进行打包后,我们也可以分别进入某个单独的模块进行运行!
注意:子项目的文件,位于父项目pom.xml同级,也就是,子项目的pom.xml位于父pom.xml的下一级文件中!