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

news/2024/11/24 20:53:07/

扫描漏洞升级

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

当下层项目将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引入的所有依赖。

参考文档 

Spring Boot Gradle Plugin Reference Guide

Spring Boot Reference Documentation


http://www.ppmy.cn/news/6151.html

相关文章

Webpack5搭建Vue环境 | Webpack

文章目录webpack打包其他资源图片资源file-loader文件的命名规则url-loaderwebpack5 asset方式字体文件的打包PluginCleanWebpackPluginHtmlWebpackPluginDefinePluginCopyWebpackPluginmode配置webpack打包其他资源 图片资源 虽然此时我未安装file-loader 但是我正常显示了图片…

Android入门第55天-在Android里使用OKHttp组件访问网络资源

简介 今天的课程开始进入高级课程类了,我们要开始接触网络协议、设备等领域编程了。在今天的课程里我们会使用OKHttp组件来访问网络资源而不是使用Android自带的URLConnection。一个是OKHttp组件更方便二个是OKHttp组件本身就带有异步回调功能。 下面就进入课程。…

HackTheBox Soccer 通过WebSockets进行SQL注入,Doas与Dstat插件提权

靶机网址: https://app.hackthebox.com/machines/Precious枚举 使用nmap枚举靶机 nmap -sC -sV 10.10.11.194机子开放了22,80和9091端口,我们本地dns解析这个域名 echo "10.10.11.194 soccer.htb" >> /etc/hosts然后fuzz…

基于Springboot+Mybatis+mysql+element-vue高校就业管理系统

基于SpringbootMybatismysqlelement-vue高校就业管理系统一、系统介绍二、功能展示1.用户登陆注册2.个人信息(学生端)3.查看企业岗位信息(学生端)4.我的应聘(学生端)5.学生信息管理(辅导员)6.三方协议书审核(辅导员&am…

IDEA创建kotlin项目

今天新建了一个kotlin项目,竟然不能导入jar包,原因是新建项目的时候,选择了kotlin作为Gradle的开发语音,kotlin语音里面,下面这行配置识别不了: implementation fileTree(dir: libs, include: [*.jar])所以…

《编译原理》实验一:熟悉实验环境VSCode并完成正则表达式转换为NFA

目录 实验一 熟悉实验环境VSCode并完成正则表达式转换为NFA 一、实验目的 二、预备知识 三、实验内容 VSCode的基本使用方法 安装和启动VSCode VSCode的窗口布局 使用VSCode将项目克隆到本地磁盘 使用VSCode登录平台 查看项目中的文件 实验源代码 演示程序的执行过程 四、实验过…

快速部署PHP Web环境(nginx php mysql redis)

先看最终效果,如下: 它是什么? 它是 docker 容器虚拟化技术。总共只有几KB大小的描述文件,文件里定义了要安装什么、配置什么,一执行就全自动处理好了。 它有什么用? 解决新来同事搭环境搭半天的问题解…

概要设计说明书(GB8567——88)基于协同的在线表格forture-sheet

概要设计说明书 1引言 1.1编写目的 为了帮助用户更好的了解和使用本在线表格,提高用户与软件的亲和度。 用户手册描述配置和使用改在线表格,以及该软件使用过程中应该注意的一下问题。 1.2背景 说明: 本用户手册所描述的软件系统的名称…