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

如何实现Maven父POM中依赖版本的自动继承省略

问题

在创建Maven项目时,若选择继承如下Spring Boot父POM:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.2</version> 
</parent>

对于所有已在父POM中声明的依赖,子POM无需指定版本即可使用,这能避免同一库出现多版本问题,非常实用。

我自己搭建了项目的父POM,但子POM继承后仍需为每个依赖指定版本(即使父POM已声明),导致每次更新依赖版本都要修改多处。目前我在子POM中只能这样写:

<dependency>
    <groupId>br.com.fisgar</groupId>
    <artifactId>fisgar-model</artifactId>
    <version>${project.version}</version>
</dependency>

我希望能像Spring Boot父POM那样,完全省略子POM中的依赖版本,请问该如何实现?

解决方法

核心原因是Spring Boot父POM通过<dependencyManagement>节点统一管理依赖版本,而非直接在<dependencies>中声明依赖。你需要在自己的父POM中做同样配置:

  • 在父POM中添加<dependencyManagement>节点
    在父POM的<project>标签下新增该节点,把需要统一管控版本的依赖声明在这里,仅指定版本号,不实际引入依赖:

    <dependencyManagement>
        <dependencies>
            <!-- 管理自定义依赖的统一版本 -->
            <dependency>
                <groupId>br.com.fisgar</groupId>
                <artifactId>fisgar-model</artifactId>
                <version>1.0.0</version> <!-- 此处指定全局统一版本 -->
            </dependency>
            <!-- 可添加更多需要统一管理的依赖 -->
        </dependencies>
    </dependencyManagement>
    

    注意:<dependencyManagement>仅负责版本管控,不会自动将依赖引入子项目,子项目仍需显式声明依赖,但无需写版本。

  • 子POM中省略版本声明
    父POM配置完成后,子POM只需声明依赖的groupId和artifactId,版本会自动继承父POM的配置:

    <dependency>
        <groupId>br.com.fisgar</groupId>
        <artifactId>fisgar-model</artifactId>
        <!-- 无需写version,自动使用父POM中dependencyManagement定义的版本 -->
    </dependency>
    
  • 版本统一更新
    后续需要更新版本时,仅需修改父POM中<dependencyManagement>对应依赖的version值,所有子项目会自动同步使用新版本,无需逐个修改子POM。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:25:18