Gradle中如何修改Springboot引入的依赖版本

扫描漏洞升级

不知道各位是否遇到过以下问题:

当下层项目将spring引入的某个依赖版本升级之后,上层项目只要指定了Springboot版本,那么还是会将这个版本改回去?

比如:现在有两个Springboot项目A、B,B项目会调用A项目中的某些方法,那么B项目就会依赖A项目。有一天,甲方通过漏洞扫描工具,扫描B项目时,发现A项目中有一个依赖的版本存在漏洞,让你升级,假设这个依赖是spring-web。 

这时,你可能是想着去A项目里面,排除原本的Jar,引入新版本的jar,就如下面这样:

    implementation ('org.springframework.boot:spring-boot-starter-web') {
        exclude group: "org.springframework", module: "spring-web"
    }
    implementation 'org.springframework:spring-web:6.0.3'

嗯,单独打开A项目,查看依赖关系,发现依赖正常,已经变成了6.0.3,ok,打包,一切正常。

emm......可是事情真的有那么简单吗?

Springboot强行覆盖

当然没那么简单,B项目引入新包A之后,你再去查看依赖,就会发现spring-web的版本又变了回去,你的修改并没有生效。

这一切都是因为Springboot的一个功能:定制管理版本(Customizing Managed Versions),只要上层指定了Springboot的版本,就会按照其内部指定版本管理依赖,下层修改根本不起作用。

如何升级

针对上面这种情况,Springboot有一个依赖管理器,里面管理了Spring 所需要的所有依赖,如果要修改依赖版本,按照他的方式指定即可。如果要指定slf4j的版本,仅需在gradle中加上ext['slf4j.version'] = '1.7.20'即可,这里提供官方的pdf

 同时,如果你想知道这个版本是否可以通过这种方式指定,你可以去Springboot的版本属性中查找,里面提供了spring引入的所有依赖。(注:这里提供的是springboot 3.0.1版本的文档,其他版本的文档属性值可能会存在不同

参考文档 

Spring Boot Gradle Plugin Reference Guide

Spring Boot Reference Documentation

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值