IDEA使用Maven创建父与子多模块项目的图文教程

 更新时间:2025年03月05日 10:40:31   作者:pan_junbiao  
在 IntelliJ IDEA 中使用 Maven 创建父与子多模块项目是一个常见的开发实践,有助于更好地组织和管理代码,所以本文小编给大家介绍了IDEA使用Maven创建父与子多模块项目的图文教程,需要的小伙伴跟着小编一起来看看吧

引言

在 IntelliJ IDEA 中使用 Maven 创建父与子多模块项目是一个常见的开发实践,有助于更好地组织和管理代码。在多模块项目中,可以将公共的代码、资源或配置抽离到独立的模块中,然后在其他模块中直接引用。这样可以避免代码重复,提高代码的重用性。

父模块可以统一管理依赖的版本和配置,子模块则继承这些配置。这样不仅简化了依赖管理,还确保了项目中所有模块使用的依赖版本一致,减少了因版本不一致导致的冲突和错误。多模块项目允许将项目按照功能或业务进行分割,每个模块都有自己的职责和功能。这使得项目结构更加清晰易懂,方便开发者进行模块化管理。

1、创建父工程

(1)使用 IDEA 新建父工程。

(2)删除父工程下多余的文件和文件夹。

2、创建子模块

(1)右键父工程,选择“新建”,然后选择“新模块”。

(2)创建子模块。

分别创建3个子模块:

com-pjb-proudct:商品模块。

com-pjb-order:订单模块。

com-pjb-member:会员模块。

注意:子模块的组名(包名)必须与父工程的一致。

(3)继续创建其余的子模块

3、父工程的 Maven 配置

(1)设置父工程的包为 pom(必须)。

<!-- 设置父工程的包为 pom -->
<packaging>pom</packaging>

(2)关联子模块。

<!-- 关联子模块-->
<modules>
    <module>com-pjb-proudct</module>
    <module>com-pjb-order</module>
    <module>com-pjb-member</module>
</modules>

(3)设置 <dependencyManagement> 节点。

Maven 中的 <dependencyManagement>节点,用于父工程POM中定义依赖的版本和配置,而不实际引入这些依赖。它提供了一种集中管理和控制项目中所有模块或子项目所使用的依赖项版本的方式。

通过 <dependencyManagement> 节点,可以在父POM中统一声明依赖项的版本,子模块在引用这些依赖时无需再显式指定版本号,从而确保所有子模块使用的都是同一版本的依赖。

在父 POM 的 <dependencyManagement> 部分,使用 <dependencies> 元素包裹一系列的 <dependency> 元素,每个 <dependency> 元素指定一个依赖项的 groupId、artifactId 和 version。

<properties>
    <spring.boot.version>2.4.2</spring.boot.version>
    <lombok.version>1.18.28</lombok.version>
</properties>
 
<!-- <dependencyManagement>节点:用于父工程POM中定义依赖的版本和配置,而不实际引入这些依赖-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring.boot.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>${spring.boot.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>${spring.boot.version}</version>
        </dependency>
 
        <!-- Lombok 依赖 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
 
    </dependencies>
</dependencyManagement>

(4)完整的父工程 pom.xml 文件配置。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <!-- SpringBoot 的依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
        <relativePath/>
    </parent>
 
    <groupId>com.pjb</groupId>
    <artifactId>MultiModule</artifactId>
    <version>1.0.0</version>
    <name>MultiModule</name>
    <description>MultiModule</description>
 
    <!-- 设置父工程的包为 pom -->
    <packaging>pom</packaging>
 
    <!-- 关联子模块-->
    <modules>
        <module>com-pjb-proudct</module>
        <module>com-pjb-order</module>
        <module>com-pjb-member</module>
    </modules>
 
    <properties>
        <spring.boot.version>2.4.2</spring.boot.version>
        <lombok.version>1.18.28</lombok.version>
    </properties>
 
    <!-- <dependencyManagement>节点:用于父工程POM中定义依赖的版本和配置,而不实际引入这些依赖-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring.boot.version}</version>
            </dependency>
 
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
                <version>${spring.boot.version}</version>
            </dependency>
 
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>${spring.boot.version}</version>
            </dependency>
 
            <!-- Lombok 依赖 -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
 
        </dependencies>
    </dependencyManagement>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
 
</project>

4、子模块的 Maven 配置

(1)<parent> 节点引用父工程的依赖。

<!-- 步骤1:不再直接使用SpringBoot依赖,而是引用父工程的依赖-->
<parent>
    <groupId>com.pjb</groupId>
    <artifactId>MultiModule</artifactId>
    <version>1.0.0</version>
</parent>

(2)设置子模块的包为 jar(必须)。

<!-- 步骤2:设置子模块的包为 jar -->
<packaging>jar</packaging>

(3)完整的子模块 pom.xml 文件配置。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <!-- 步骤1:不再直接使用SpringBoot依赖,而是引用父工程的依赖-->
    <parent>
        <groupId>com.pjb</groupId>
        <artifactId>MultiModule</artifactId>
        <version>1.0.0</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
 
    <!-- 步骤2:设置子模块的包为 jar-->
    <packaging>jar</packaging>
 
    <!-- 注意:groupId 必须与父工程一致 -->
    <groupId>com.pjb</groupId>
    <artifactId>Proudct</artifactId>
    <version>1.0.0</version>
    <name>com-pjb-proudct</name>
    <description>com-pjb-proudct</description>
 
    <!-- 子模块在引用这些依赖时无需再显式指定版本号,从而确保所有子模块使用的都是父工程同一版本的依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 
        <!-- Lombok 依赖 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
 
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 注意:必须加上如下配置,否则打包会报错 -->
                <configuration>
                    <classifier>exec</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>
 
</project>

5、启动服务

启动子模块,测试运行结果。

启动成功。

以上就是IDEA使用Maven创建父与子多模块项目的图文教程的详细内容,更多关于IDEA Maven创建父与子项目的资料请关注脚本之家其它相关文章!

相关文章

  • MapStruct实体间转换的简单用法

    MapStruct实体间转换的简单用法

    今天小编就为大家分享一篇关于MapStruct实体间转换的简单用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 使用Java绘制心形动画的代码示例

    使用Java绘制心形动画的代码示例

    Java动态爱心代码是一种简单而精美的动态效果,这篇文章主要介绍了使用Java绘制心形动画的代码示例,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-06-06
  • Java异常处理之try...catch...finally详解

    Java异常处理之try...catch...finally详解

    今天小编就为大家分享一篇关于Java异常处理之try...catch...finally详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 使用Springboot实现word在线编辑保存

    使用Springboot实现word在线编辑保存

    PageOffice目前支持的Web编程语言及架构有:Java(JSP、SSH、MVC等),ASP.NET(C#、VB.NET、MVC、Razor等),PHP,ASP,本篇文章就带你使用Springboot整合PageOffice实现word在线编辑保存
    2021-08-08
  • Android开发在轮播图片上加入点击事件的方法

    Android开发在轮播图片上加入点击事件的方法

    这篇文章主要介绍了Android开发在轮播图片上加入点击事件的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • 使用Java实现将PowerPoint转换为PDF的完整指南

    使用Java实现将PowerPoint转换为PDF的完整指南

    将 PowerPoint 转换为 PDF 就是一个规避兼容问题的不二选择,通过 Java 完成这一自动化流程,则能进一步应用到办公自动化和在线文档系统中,下面我们就来看看具体实现步骤吧
    2025-12-12
  • Kafka利用Java实现数据的生产和消费实例教程

    Kafka利用Java实现数据的生产和消费实例教程

    这篇文章主要给大家介绍了关于Kafka利用Java实现数据的生产和消费的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • Java通过反射查看类的信息示例

    Java通过反射查看类的信息示例

    这篇文章主要介绍了Java通过反射查看类的信息,结合实例形式详细分析了java基于反射获取类信息的相关原理与实现技巧,需要的朋友可以参考下
    2019-07-07
  • java冒泡排序简单实例

    java冒泡排序简单实例

    本文主要介绍了JSONjava冒泡排序实例与思路分析。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • 简单了解Java中的可重入锁

    简单了解Java中的可重入锁

    这篇文章主要介绍了简单了解Java中的可重入锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论