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.0
http://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}

浙公网安备 33010602011771号