You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Maven多模块项目新增不同Spring Boot版本的子模块?

实现不同子模块使用独立Spring Boot版本的方法

你的父POM通过直接继承spring-boot-starter-parent统一管理版本,所有子模块默认会继承该配置。要让新增子模块使用不同Spring Boot版本,有两种实用方案:

方案一:子模块直接覆盖继承关系

在新子模块的pom.xml中,重新指定spring-boot-starter-parent的目标版本,同时通过依赖管理导入原父项目的配置(因为Maven仅支持一个直接父POM):

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>目标版本号</version> <!-- 例如3.1.5 -->
    <relativePath/>
</parent>

<dependencyManagement>
    <dependencies>
        <!-- 导入原父项目的依赖管理,确保非Spring Boot依赖版本统一 -->
        <dependency>
            <groupId>你的原父项目groupId</groupId>
            <artifactId>原父项目artifactId</artifactId>
            <version>原父项目版本号</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

这种方式让子模块完全独立控制Spring Boot版本,但需要手动维护原父项目的依赖导入。

方案二:父POM改用spring-boot-dependencies管理版本(更推荐)

如果后续可能有更多子模块需要自定义版本,建议先调整父POM,不再直接继承spring-boot-starter-parent,而是通过依赖管理导入版本控制,实现灵活覆盖:

1. 修改原父POM配置

替换原有的<parent>继承,改用spring-boot-dependencies导入版本管理,同时补充原父POM默认提供的插件和属性:

<!-- 删除原有的spring-boot-starter-parent继承块 -->

<dependencyManagement>
    <dependencies>
        <!-- 导入Spring Boot默认依赖版本,作为全局默认 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>3.2.1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- 保留原父POM中其他自定义的依赖管理配置 -->
    </dependencies>
</dependencyManagement>

<properties>
    <java.version>17</java.version> <!-- 匹配Spring Boot 3.x的Java版本要求 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
    <plugins>
        <!-- 添加Spring Boot Maven插件,原starter-parent默认包含该插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>3.2.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2. 原有子模块无需修改

原4个子模块会自动继承父POM的依赖管理,保持Spring Boot 3.2.1版本不变。

3. 新子模块配置独立版本

在新子模块的pom.xml中,仅需覆盖spring-boot-dependencies的版本即可:

<dependencyManagement>
    <dependencies>
        <!-- 覆盖Spring Boot版本为目标值 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>目标版本号</version> <!-- 例如3.0.0 -->
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- 导入原父项目依赖管理,确保其他依赖版本统一 -->
        <dependency>
            <groupId>你的原父项目groupId</groupId>
            <artifactId>原父项目artifactId</artifactId>
            <version>原父项目版本号</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- 若新子模块是Spring Boot应用,需单独配置插件版本 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>目标版本号</version>
        </plugin>
    </plugins>
</build>

该方案的优势是父项目依然能统一管理大部分依赖,子模块仅需修改Spring Boot相关版本,更易于维护和扩展。


内容的提问来源于stack exchange,提问作者firemancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:10:04