Eclipse 创建 maven 多模块项目

在使用 maven 构建项目时,我们常常将项目拆分成多个模块,这样方便解耦和协同开发。本文就讲讲怎么使用 Eclipse 创建一个 maven 的多模块项目。

举个简单例子,假设我们要创建一个 shop-demo(商城)项目,里面包含了:common(公共模块)、store(商家模块)、user(用户模块)

结构如下:

  • shop-demo
    • common
    • store
    • user

创建步骤

创建父工程

  1. 右键 New Mavne Project,注意这里要勾选上:Create a simple project。

    1574910508548

  2. 填上 Group 和 Artifact 信息,由于是创建父工程,所以 Packageing 这里选择:pom。

    1574910636627

  3. 创建完后,会发现这个 shop-demo 工程里面什么都没有,只有一个 pom.xml 文件。

创建 common 模块

  1. 在刚才创建的 shop-demo 工程上,右键创建 Maven Module。

    1574910693390

  2. 填上 Module Name,这里会发现已经默认选中了 Parent Project。

    1574910729935

  3. 填上 Group 和 Artifact 信息:

    1574910767150

  4. 点击完成创建了 common 工程。而且会发现,common 工程其实是在 shop-demo 工程里面的。

    1574911375459

创建 store 和 user 工程

另外两个工程 store 和 user 的创建和上面的 common 一样。最终创建出的效果如:

1574911798608

可以看出,父模块和子模块下都有一个 pom.xml 文件。

层级关系

对于 maven 来说,模块之间的上下级和依赖关系都是通过 pom.xml 文件来描述的,以上面例子为例:

  1. shop-demo 是父工程,它的 Packaging 定义的是 pom,并在 pom.xml 文件中描述了包含的子模块:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?xml version="1.0" encoding="UTF-8"?>
    <project
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zhangzw</groupId>
    <artifactId>shop-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
    <module>common</module>
    <module>store</module>
    <module>user</module>
    </modules>
    </project>
  2. common 工程用于存放公共代码,Packaging 应该是 jar,并在 pom.xml 文件中描述了它的父模块信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0"?>
    <project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <parent>
    <groupId>com.zhangzw</groupId>
    <artifactId>shop-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>common</artifactId>
    <packaging>jar</packaging>
    </project>
  3. store 和 user 工程一般会对外提供服务,所以一般打成 war 包:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0"?>
    <project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <parent>
    <groupId>com.zhangzw</groupId>
    <artifactId>shop-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>store</artifactId>
    <packaging>war</packaging>
    </project>