当前位置: 首页 > news >正文

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></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></plugin></plugins></build></project>

5、启动服务

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

启动成功。


http://www.mrgr.cn/news/47062.html

相关文章:

  • ECharts图表图例6
  • Linux——cp-mv-rm命令
  • HarmonyOS媒体文件操作
  • C语言预处理详解(下)(31)
  • gray_range_rect是这样的
  • 四氟采水器耐强酸PTFE打水桶可应用水资源研究及环境监测
  • 浏览器对象属性
  • 什么是DHCP Snooping?到底工作在第几层?
  • <<迷雾>> 第10章 用机器做一连串的加法(5)--控制器 示例电路
  • 【银河麒麟高级服务器操作系统】安全配置基线相关分析全过程及解决方案
  • Python 如何使用 Redis 作为缓存
  • 如何提高浮点类型计算的精度
  • SQL练习代码(第一篇)
  • 软件测试工作中-商城类项目所遇bug点
  • 【QT上位机/嵌入式项目】基于IMX6ull--Bluez蓝牙健康助手上位机
  • JavaScript判断array中是否存在某几个元素、字符串中是否存在某几个字符串
  • 打不死的超强生命力
  • 【一文讲透(番外篇)】如何编译安装KWDB v2.0.4数据库
  • 宝塔面板www目录,从系统盘切换到数据盘——浪浪云
  • Golang通用代码生成器:仙童,电音仙女尝鲜版十二,为售前准备的哑数据模式