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}
posted @ 2025-12-07 18:34  yangykaifa  阅读(7)  评论(0)    收藏  举报