写在前面

在日常开发过程中经常会遇到Maven多模块的情况,那么如何创建Maven多模块呢?此处笔者结合常用的IDEA工具进行介绍,Eclipse、MyEclipse等工具创建Maven项目过程与之类似,因此就不过多介绍。

本文主要分为4个部分,第一部分创建parent项目,第二部分创建children项目,第三部分模块调用,第四部分运行项目。

创建parent项目

1、打开IDEA工具,使用Maven来构建项目,请注意此处不要勾选模板,因为使用模板构建maven项目的速度非常慢,所以此处忽略模板,当后面需要某文件夹时可自行手动创建:

2、按照图示填入项目名称和模块名称:

3、配置工程路径,最后点击finish完成parent项目的构建过程:

4、由于parent项目只是用于管理各模块和第三方依赖,因此此处的src目录可以删除:

请注意parent项目的pom.xml文件是不能删除的,后续需要使用它来进行依赖管理。这样关于parent项目的创建过程就告一段落,接下来开始进行子模块的创建工作。

创建children模块

创建children1模块

1、鼠标选中parent模块,然后右键单击出现的new->选择Module:

2、请注意这里依旧不选择模板,直接点击下一步:

3、在图中填入children模块的名称,然后点击下一步:

4、检查children模块的路径是否需要修改,如果不需要则点击finish,这样就创建完成children1模块:

5、最后查看一下此时的项目目录结构:

同时请注意此时parent模块的pom.xml文件和children1模块中的pom.xml文件的变化:

创建children2模块

1、由于创建children2模块的操作和children1模块创建操作类似,这里就不赘述:

2、请注意前面创建的children1和children2都是普通的Java项目,并不是JavaWeb项目。在一个JavaWeb项目中,可能分为dao、service、web、common、utils等模块,通常而言除了web模块是web项目结构,其他模块则是普通的Java项目。在本例中,笔者假设children1为普通项目,children2为web项目,接下来就介绍如何将一个普通的Java项目改造成一个JavaWeb项目。

3、鼠标选中children2模块,然后右键单击出现的Open Module Settings:

4、在出现的页面中,先选择children2,然后点击左上角的+号,选择下拉菜单中的web:

5、接着按照图示操作设置web资源目录:

请注意确保资源resource目录为demoparent\children2\src\main\webapp路径,尽管此时src\main\webapp目录是不存在的,但是IDEA会自动帮我们进行创建。

6、按照图示修改web.xml文件目录:


请注意确保web.xml文件目录为demoparent\children2\src\main\webapp\WEB-INF\web.xml路径。

7、这样我们就将children2模块成功的改造成了一个web项目,此时项目结构如下:

模块调用

虽然上述父子模块都创建完成,但是并没有介绍children模块之间的调用,接下来尝试在children2模块中调用children1模块中的方法。
1、在children1模块中新建Hello类和hello方法,如下图所示:

2、在children2模块中引用children1模块,只需修改children2模块中的pom.xml文件即可:

1
2
3
4
5
6
7
<dependencies>
<dependency>
<groupId>com.envy.demo</groupId>
<artifactId>children1</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

请注意代码的位置:

3、为了更好的展示演示,这里在children2模块的webapp目录下创建index.jsp页面,然后在该页面中调用children1模块中的方法:

4、仅仅是前面那样不够的,因为children2模块在构建时默认是以jar包存在的,但是Tomcat中运行的war包,因此需要修改children2模块的pom.xml文件,注意children1模块不需要修改。在children2模块的pom.xml文件中新增如下代码:

1
<packaging>war</packaging>

注意代码的位置:

5、点击IDEA右侧边栏的Maven Project ,找到parent-demo模块,然后点开LifeCycle菜单,双击package:

6、当项目构建成功后,会在children2模块的根目录下生成一个target目录,该目录下有一个war文件,这个就是后续要运行的war文件:

项目运行

1、点击项目右上角的如下按钮:

2、选择出现页面左上角的+号,然后选择下拉框的Tomcat,接着选择本地Tomcat。然后在Tomcat选项卡中首先配置Tomcat的名称,可随意设置,此处设置为demo,然后点击Deployment选项卡,如下:

3、点击Tomcat配置页面中的Deployment选项,在该选项卡中点击+号,选择外部资源(External Resource),并选择刚才打包好的war包:

4、点击右上角的demo按钮,开始启动项目:

5、在浏览器地址栏中输入http://localhost:8080/即可看到相关信息:

当然在第3步中,不选择使用选择外部资源(External Resource),而是直接使用Atifacts,然后选择children2:war即可:

然后点击确定,再次运行项目,访问同一个URL,可以发现也出现了相应的结果。这样关于IDEA中创建Maven多模块项目的介绍就到此为止。