找了许久竟然发现没有现成的生成多模块Maven项目的方法,难怪好多人要写脚手架了。全新搭建一个新的工程还是有一些工作量的,这里先把创建多模块的Maven项目的方法记录下。

什么是多模块的Maven项目

什么是多模块的Maven项目就不细说了。一句话,多模块的Maven项目有一个特点是,位于项目根目录的主POM文件的packaging类型是pom,并且包含多个module。POM文件类似如下:

<project>
    ......
    <packaging>pom</packaging>
    ......
    <modules>
        <module>module1</module>
        <module>module2</module>
    </modules>
</project>

项目下的每一个模块都是普通的Maven项目,并且可以独立打包,当然也可以通过主POM打包。

多模块的Maven项目有什么好处

降低重复,多个子模块重用依赖与配置,并且可以实现一键打包多个子模块的操作。

如何创建多模块的Maven项目

我们将创建一个包含两个子模块的Maven项目,假设groupId=com.test,主子工程的artifactId分别为test-project,test-project-service, test-project-web。使用时你可以改成你自己的名称。

首先生成主项目,在命令行执行如下命令:

mvn archetype:generate \
-DarchetypeGroupId=org.codehaus.mojo.archetypes \
-DarchetypeArtifactId=pom-root \
-DarchetypeVersion=RELEASE \
-DgroupId=com.test \
-DartifactId=test-project  \
-Dversion=0.0.1-SNAPSHOT \
-DinteractiveMode=false 

然后切换到生成的根目录下,在这个例子中是test-project目录。

接下来生成两个子模块,依次执行如下命令:

mvn archetype:generate \
-DgroupId=com.test \
-DartifactId=test-project-service  \
-Dversion=0.0.1-SNAPSHOT \
-DinteractiveMode=false 

mvn archetype:generate \
-DgroupId=com.test \
-DartifactId=test-project-web  \
-Dversion=0.0.1-SNAPSHOT \
-DinteractiveMode=false

这两个命令会在根目录下生成2个子工程,并且在子工程的POM文件中指定了主项目作为他们的parent。同时也在主POM中添加这些子项目到modules元素下。

这样就完成了包含两个模块的Maven项目了,打开IDE,导入Maven工程即可。