使用 Maven 构建多模块项目

2,944 阅读3分钟

在实际项目中,经常会遇到需要构建多个子模块的情况。为了方便管理这些子模块,我们可以使用 Maven 构建多模块项目。本文将介绍如何使用 Maven 管理多个子模块的依赖和构建过程。

什么是 Maven 多模块项目

Maven 多模块项目是指一个 Maven 项目包含多个子模块,每个子模块都是一个独立的 Maven 项目,但它们之间存在依赖关系。Maven 多模块项目可以方便地管理多个子模块的依赖和构建过程,同时也可以提高项目的可维护性和可扩展性。

创建 Maven 多模块项目

创建 Maven 多模块项目非常简单,只需要在父项目的 pom.xml 文件中添加如下配置即可:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>parent</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <modules>
    <module>module1</module>
    <module>module2</module>
  </modules>
</project>

在上面的配置中,modules 元素用于指定子模块的名称,每个子模块都应该在父项目的同级目录下。在子模块的 pom.xml 文件中,需要指定父项目的坐标,以及子模块的名称和类型,例如:

<project>
  <parent>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>module1</artifactId>
  <packaging>jar</packaging>
</project>

多模块项目的依赖管理

在 Maven 多模块项目中,子模块之间存在依赖关系,因此需要进行依赖管理。我们可以在父项目的 pom.xml 文件中定义公共依赖,然后在子模块的 pom.xml 文件中引用这些依赖。例如:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>parent</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <modules>
    <module>module1</module>
    <module>module2</module>
  </modules>
  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>common</artifactId>
      <version>1.0.0</version>
    </dependency>
  </dependencies>
</project>

在上面的配置中,dependencies 元素用于定义公共依赖,例如 common 依赖。然后在子模块的 pom.xml 文件中,可以引用这些依赖,例如:

<project>
  <parent>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>module1</artifactId>
  <packaging>jar</packaging>
  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>common</artifactId>
      <version>1.0.0</version>
    </dependency>
  </dependencies>
</project>

多模块项目的构建过程

在 Maven 多模块项目中,每个子模块都可以独立构建,也可以通过父项目进行统一构建。如果要构建整个项目,只需要在父项目的根目录下执行 mvn clean install 命令即可。Maven 会自动按照依赖关系进行构建,先构建依赖的子模块,再构建依赖它们的子模块。

如果只想构建某个子模块,可以进入该子模块的目录,然后执行 mvn clean install 命令即可。

示例代码

下面是一个简单的 Maven 多模块项目的示例代码。该项目包含一个父项目和两个子模块,其中一个子模块依赖另一个子模块。

父项目的 pom.xml 文件:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>parent</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <modules>
    <module>module1</module>
    <module>module2</module>
  </modules>
  <dependencies>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>30.1.1-jre</version>
    </dependency>
  </dependencies>
</project>

子模块 module1 的 pom.xml 文件:

<project>
  <parent>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>module1</artifactId>
  <packaging>jar</packaging>
  <dependencies>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>
  </dependencies>
</project>

子模块 module2 的 pom.xml 文件:

<project>
  <parent>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>module2</artifactId>
  <packaging>jar</packaging>
  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>module1</artifactId>
      <version>1.0.0-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

在上面的示例代码中,父项目依赖了 Guava 库,子模块 module2 依赖了子模块 module1。在子模块 module1 的 pom.xml 文件中,引用了 Guava 库。

总结

本文介绍了如何使用 Maven 构建多模块项目,包括创建 Maven 多模块项目、多模块项目的依赖管理和构建过程。通过使用 Maven 构建多模块项目,可以方便地管理多个子模块的依赖和构建过程,提高项目的可维护性和可扩展性。