文章目录
  1. 1.概述
  2. 2.创建项目
    1. 2.1 创建父项目 site-demo
    2. 2.2 创建子模块 site-utils
    3. 2.3 创建子模块 site-api
    4. 2.4 创建子模块 site-web
  3. 3.创建结果
    1. 3.1 site-demo/pom.xml
    2. 3.2 site-utils/pom.xml
    3. 3.2 site-api/pom.xml
    4. 3.2 site-web/pom.xml

实际应用中,一个项目往往会包含多个模块,本文以三个模块为例演示了 IDEA 多模块项目的创建方法。

作者:王克锋
出处:https://kefeng.wang/2017/03/19/idea-modules/
版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。

1.概述

一个项目会包括多个模块,比如典型的 WEB 项目可以划分为以下 utils / api / web 三个模块。其中 api 依赖于 utils, api 与 web 并列。

2.创建项目

2.1 创建父项目 site-demo

  • 菜单: File / New / Project
  • “Maven”: 不要勾选 “Create from archetype”, 直接点击 “Next”
  • 填写项目坐标: GroupId=”wang.kefeng”, ArtifactId=”site-demo”, Version=”1.0-SNAPSHOT”
  • 填写项目位置: projectName=”site-demo”, projectLocation=”…\site-demo”
  • 删除目录 src,因为父项目只用来管理各模块,没有源码

2.2 创建子模块 site-utils

该模块是普通的 Java 项目,不包括 Web 内容。

  • 右键点击父项目 site-demo,点击菜单项 New / Module
  • “Maven”: 不要勾选 “Create from archetype”, 直接点击 “Next”
  • 填写项目坐标: 只能填写 ArtifactId=”site-utils”, GroupId/Version 被限制为与父项目相同
  • 填写项目位置: projectName=”site-utils”, projectLocation=”…\site-utils”

2.3 创建子模块 site-api

与模块 site-utils 类似,但创建后要添加对 site-utils 的依赖:

1
2
3
4
5
6
7
<dependencies>
<dependency>
<artifactId>site-utils</artifactId>
<groupId>wang.kefeng</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

2.4 创建子模块 site-web

  • 与模块 site-utils 类似,创建模块 site-web
  • 主菜单 File / Project Structure, 打开 “Project Structure”
  • 进入 Module,选择模块 site-web,再点加号图标,选择 Web
  • 修改 web.xml 路径为(原为 “…\web\WEB-INF\web.xml”) “…\src\main\webapp\WEB-INF\web.xml”
  • 修改 web 资源路径(原为 “…\web”) 为 “…\src\main\webapp”

3.创建结果

3.1 site-demo/pom.xml

包含了父项目自身的坐标,还有它管辖的三个模块。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<groupId>wang.kefeng</groupId>
<artifactId>site-demo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<modules>
<module>site-api</module>
<module>site-utils</module>
<module>site-web</module>
</modules>

<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

3.2 site-utils/pom.xml

定义子模块的坐标,先继承父项目,再定义自身的 artifactId。

1
2
3
4
5
6
<parent>
<artifactId>site-demo</artifactId>
<groupId>wang.kefeng</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>site-utils</artifactId>

3.2 site-api/pom.xml

与模块 site-utils 类似,定义子模块的坐标,先继承父项目,再定义自身的 artifactId;
另外还指定了所依赖模块的坐标(site-utils)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<parent>
<artifactId>site-demo</artifactId>
<groupId>wang.kefeng</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>site-api</artifactId>

<dependencies>
<dependency>
<artifactId>site-utils</artifactId>
<groupId>wang.kefeng</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

3.2 site-web/pom.xml

与模块 site-utils 类似,定义子模块的坐标,先继承父项目,再定义自身的 artifactId;
另外指定了打包方式为 war(非 WEB 模块无需指定,默认为 jar 方式)。

1
2
3
4
5
6
7
8
<packaging>war</packaging>

<parent>
<artifactId>site-demo</artifactId>
<groupId>wang.kefeng</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>site-web</artifactId>

文章目录
  1. 1.概述
  2. 2.创建项目
    1. 2.1 创建父项目 site-demo
    2. 2.2 创建子模块 site-utils
    3. 2.3 创建子模块 site-api
    4. 2.4 创建子模块 site-web
  3. 3.创建结果
    1. 3.1 site-demo/pom.xml
    2. 3.2 site-utils/pom.xml
    3. 3.2 site-api/pom.xml
    4. 3.2 site-web/pom.xml