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

如何调整SpringBoot子模块POM,统一Maven多模块项目版本

如何统一Maven多模块中SpringBoot模块与根模块的版本

当前你的monorepo项目中,backend模块直接继承SpringBoot的父pom,导致其版本与根模块、frontend模块不一致(构建时backend版本显示为3.0.2,其他模块为1.0-SNAPSHOT)。要解决这个问题,需要调整父继承关系,并通过根pom统一管理SpringBoot的依赖版本,具体步骤如下:

1. 修改根pom.xml,引入SpringBoot依赖管理

在根pom中添加dependencyManagement节点,导入SpringBoot的依赖版本定义,既保持根模块作为父项目的统一版本控制,又能让子模块复用SpringBoot的预定义依赖版本:

<?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>org.example</groupId>
    <artifactId>multi-module-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>frontend</module>
        <module>backend</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- 统一定义SpringBoot版本,方便后续修改 -->
        <spring-boot.version>3.0.2</spring-boot.version>
    </properties>

    <!-- 导入SpringBoot的依赖版本管理 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

2. 修改backend/pom.xml,继承根pom并调整插件配置

将backend的父项目改为根pom,同时指定spring-boot-maven-plugin的版本(也可后续在根pom的pluginManagement中统一管理),并添加必要的执行配置以确保生成可执行jar:

<?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>

    <!-- 改为继承根模块pom -->
    <parent>
        <groupId>org.example</groupId>
        <artifactId>multi-module-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>backend</artifactId>

    <properties>
        <java.version>17</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

    <dependencies>
        <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>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 使用根pom中定义的SpringBoot版本 -->
                <version>${spring-boot.version}</version>
                <!-- 配置repackage目标,确保生成可执行jar包 -->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

3. 验证修改效果

执行mvn clean install命令后,查看Reactor Summary,你会发现backend模块的版本已经和根模块、frontend模块保持一致:

[INFO] Reactor Summary:
[INFO] 
[INFO] multi-module-demo 1.0-SNAPSHOT ..................... SUCCESS [  0.150 s]
[INFO] frontend 1.0-SNAPSHOT .............................. SUCCESS [  0.784 s]
[INFO] backend 1.0-SNAPSHOT ................................ SUCCESS [  4.102 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:15:34