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

Spring Dependency Management插件如何设置最低依赖版本且不覆盖高版本?

Spring Dependency Management插件:如何设置依赖最低版本且不覆盖更高版本

背景

我正在使用Spring Dependency Management插件,它通过内部变量控制严格的依赖版本。例如,Spring Boot 3.2.11搭配插件1.1.6版本时,xmlunit2.version被严格设置为2.9.1,这意味着org.xmlunit:xmlunit-core的版本会被固定为2.9.1。

当xmlunit-core 2.10.0以下版本存在CVE漏洞时,我们可以通过在build.gradle中添加以下配置来覆盖版本:

ext {
  set("xmlunit2.version", "2.10.0")
}

但这种方式存在隐患:如果后续升级Spring Boot到3.2.99版本(该版本自带安全的xmlunit 2.99.0),若未移除上述覆盖配置,项目会一直使用2.10.0,而非插件提供的2.99.0,导致依赖过时。

Gradle原生方案的局限性

Gradle原生依赖管理支持通过约束设置最低版本:

dependencies {
  constraints{
    implementation 'org.xmlunit:xmlunit-core:2.10.0'
  }
}

这种方式仅要求最低版本,若存在更高版本(如2.99.0)则会优先使用高版本。但Spring Dependency Management插件会覆盖此类约束,且直接在ext{}中覆盖xmlunit2.version会丢失插件推荐的高版本信息,版本范围写法(如"2.10.0+")也无法生效。

限制条件

我无法弃用该插件改用Gradle原生策略,当前团队普遍使用该插件,以往通过直接依赖或在ext中设置严格版本的方式已经产生了技术债务。

需求

是否存在插件支持的方式,能够设置依赖的最低版本且不会覆盖插件提供的更高版本?期望的配置方式类似:

ext {
  set("xmlunit2.requireVersion", "2.10.0")
}

该配置不会覆盖xmlunit2.version=2.99.0,最终依赖树应如下所示:

|    \--- org.xmlunit:xmlunit-core:2.10.0 -> 2.99.0 (c)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:12:33