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

Maven 多模块项目与 Spring Boot 结合指南 - 教程

Maven 多模块项目与 Spring Boot 结合指南

目录


项目概述

本文档以 RuoYi-Vue-SQLServer-C 项目为例,讲解 Maven 多模块项目的管理方式以及如何与 Spring Boot 结合。这是一个典型的企业级 Spring Boot 多模块项目。


Maven 项目结构

整体结构

RuoYi-Vue-SQLServer-C (父模块/聚合模块)
├── pom.xml (父POM - 统一管理依赖版本)
├── ruoyi-admin (子模块 - Web服务入口,启动模块)
│   └── pom.xml
├── ruoyi-common (子模块 - 通用工具)
│   └── pom.xml
├── ruoyi-framework (子模块 - 框架核心)
│   └── pom.xml
├── ruoyi-system (子模块 - 系统业务模块)
│   └── pom.xml
├── ruoyi-quartz (子模块 - 定时任务)
│   └── pom.xml
└── ruoyi-generator (子模块 - 代码生成器)└── pom.xml

模块依赖关系图

ruoyi-admin (启动模块)├─ ruoyi-framework│   ├─ ruoyi-system│   │   └─ ruoyi-common│   └─ ruoyi-common├─ ruoyi-quartz│   └─ ruoyi-common└─ ruoyi-generator└─ ruoyi-common

说明

  • ruoyi-admin 是启动模块,包含 main 方法
  • ruoyi-common 是基础模块,被其他模块依赖
  • 依赖具有传递性,ruoyi-admin 可以使用所有间接依赖的模块

父模块 POM 配置

父模块的 pom.xml 文件是整个项目的核心配置文件,负责统一管理所有子模块的依赖版本。

1. 基本信息配置

<?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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion><!-- 项目坐标 --><groupId>com.ruoyi</groupId><artifactId>ruoyi</artifactId><version>3.9.0</version><!-- 项目名称和描述 --><name>ruoyi</name><description>若依管理系统</description><!-- 打包方式必须是 pom --><packaging>pom</packaging></project>

关键点

  • groupId: 组织/公司的唯一标识,通常使用域名倒写(如 com.ruoyi)
  • artifactId: 项目的唯一标识
  • version: 项目版本号
  • packaging: 父模块必须设置为 pom

2. 声明子模块

<modules>
<module>ruoyi-admin</module>
<module>ruoyi-framework</module>
<module>ruoyi-system</module>
<module>ruoyi-quartz</module>
<module>ruoyi-generator</module>
<module>ruoyi-common</module>
</modules>

说明

  • <modules> 标签用于声明所有子模块
  • <module> 的值是子模块的目录名
  • Maven 会按照声明顺序构建子模块

3. 统一管理属性(properties)

<properties><!-- 项目版本 --><ruoyi.version>3.9.0</ruoyi.version><!-- 编码配置 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!-- Java 版本 --><java.version>1.8</java.version><!-- Spring Boot 版本 --><spring-boot.version>2.5.15</spring-boot.version><!-- 第三方依赖版本 --><druid.version>1.2.23</druid.version><swagger.version>3.0.0</swagger.version><pagehelper.boot.version>1.4.7</pagehelper.boot.version><fastjson.version>2.0.58</fastjson.version><jwt.version>0.9.1</jwt.version><!-- 覆盖 Spring Boot 默认版本 --><tomcat.version>9.0.108</tomcat.version><logback.version>1.2.13</logback.version><spring-security.version>5.7.14</spring-security.version></properties>

优点

  • 统一管理所有依赖的版本号
  • 便于版本升级,只需修改一处
  • 子模块可以通过 ${变量名} 引用

4. 依赖管理(dependencyManagement)

这是 Maven 多模块项目的核心机制

<dependencyManagement><dependencies><!-- Spring Boot 依赖管理 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Framework 依赖管理 --><dependency><groupId>org.springframework</groupId><artifactId>spring-framework-bom</artifactId><version>${spring-framework.version}</version><type>pom</type><scope>import</scope></dependency><!-- 第三方依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${pagehelper.boot.version}</version></dependency><!-- 项目内部模块依赖 --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common</artifactId><version>${ruoyi.version}</version></dependency><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-framework</artifactId><version>${ruoyi.version}</version></dependency><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-system</artifactId><version>${ruoyi.version}</version></dependency></dependencies></dependencyManagement>

重要理解

特性说明
只声明不引入dependencyManagement 中的依赖不会被实际引入项目
统一版本管理所有子模块引用时不需要指定版本号
版本优先级子模块可以覆盖父模块定义的版本
BOM 支持可以通过 scope=import 导入其他项目的依赖管理

BOM(Bill of Materials)说明

  • spring-boot-dependencies 是 Spring Boot 的依赖清单
  • type=pom + scope=import 表示导入该 POM 的依赖管理
  • 这样可以继承 Spring Boot 官方定义的所有依赖版本

5. 构建配置

<build><plugins><!-- Maven 编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>${java.version}</source><target>${java.version}
http://www.jsqmd.com/news/65553/

相关文章:

  • 2025砂面粉厂家实力榜:思洛尔新材料以纳米级球形蜡粉领跑,六家高潜力国产技术代表企业深度解析
  • 2025东莞包装材料厂家实力榜:共晟包装以可降解防静电技术领跑,八大环保纸袋品类深度解析
  • chat2db邀请码
  • 2025 最新高端艺术漆品牌 TOP10推荐!技术创新 + 美学表达权威榜单发布,重新定义墙面装饰新高度,行业专业数据,行业口碑榜及选择指南
  • 《密码系统设计》第十一周预习报告
  • 2025防水织带厂家实力榜:东莞市永沣织带以创新飞织技术领跑,六大高潜力本土品牌核心优势深度解析
  • 《密码系统设计》第十二周预习报告
  • 2025康明斯发电机组实力榜:广东三澳新能源科技领衔,六家高潜力本土品牌深度解析
  • 2025东莞汉高实业除蜡水厂家实力榜:六家国产技术代表企业的不锈钢金属工业清洗核心优势深度解析
  • 2025吹塑制品厂家实力榜:东莞石排盛林塑胶厂以精密中空吹塑领跑,六大高潜力本土品牌核心优势深度解析
  • 2025广东山农农业集团蔬菜配送实力榜:六家本土生鲜巨头的新鲜食材与有机食堂供应深度解析
  • 洛谷 P1271:选举学生会 ← 计数排序
  • will Arab play English again?
  • 2025广东懒人全自动酿酒设备实力榜:六家本土技术代表企业,以智能蒸汽与不锈钢工艺领跑行业深度解析
  • 使用Kali进行DOS攻击
  • FortiGuard 应用控制服务更新:新版本特性与签名变动
  • 【OS zephyr】子系统logging - 教程
  • 【OS zephyr】子系统logging - 教程
  • AI Studio GPU 占用过高导致卡顿的解决办法
  • 2025东莞宝晨研磨自动化机械有限公司实力榜:干湿两用溜光机与磁力研磨抛光机核心技术深度解析,六家高潜力本土品牌优势对比
  • 详细介绍:【Jenkins】Jenkins配置从节点 - Launch Agent
  • 2025酒店拖鞋机厂家实力榜:东莞昆仑智能以高效智能技术领跑,六家优质本土品牌生产线深度解析
  • 服装人体工效学
  • 2025东莞永安科技锡膏厂家实力榜:激光焊接与Mini LED固晶等八大创新品类领跑,高导热金锡合金技术深度解析
  • 小白必看:零花销开启微调模型之旅
  • 2025广东泽洋金属材料实力榜:七大不锈钢型号深度解析,301至316L精密合金引领行业革新
  • 2025广东泽洋金属材料实力榜:七大不锈钢型号深度解析,301至316L精密合金引领行业革新
  • 2025东莞蔚林服饰毛衣厂家实力榜:六家羊绒针织技术代表企业,小香风与高领长款男女童装深度解析
  • 2025防静电地板厂家实力排行榜:广东立品以六面包钢技术领跑,七大高潜力品类深度解析
  • 中旅国际数据库国产化升级:以金仓KES打造安全可控的旅游服务底座 - 实践