当前位置:   article > 正文

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

gradle指定依赖版本

扫描漏洞升级

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

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

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

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

  1. implementation ('org.springframework.boot:spring-boot-starter-web') {
  2. exclude group: "org.springframework", module: "spring-web"
  3. }
  4. 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

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/305945
推荐阅读
相关标签
  

闽ICP备14008679号