![](/img/trans.png)
[英]Defaults used by Spring boot - spring-boot-starter-parent
[英]upgrade to SnakeYaml 1.31 in spring-boot-starter-parent 2.7.3
有 springboot 项目,其中想要排除 snakeyaml 1.30 或升级它 1.31 以避免强化问题报告
snakeyaml 1.30 版本存在安全漏洞
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
</parent>
下面是项目的有效pom.xml
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.30</version>
<scope>compile</scope>
</dependency>
是否有可能按照补救措施将版本升级到 snakeyaml 1.31 进行升级?
如果您使用的是gradle
,则以下答案与您相关。 可以简单地覆盖 spring 引导使用的版本,如下所示:
使用io.spring.dependency-management
插件,它会自动从您使用的 Spring Boot 版本导入spring-boot-dependencies
bom。
plugins {
id 'org.springframework.boot' version '2.7.3'
}
完成后,您只需设置相应的属性即可自定义 spring 正在使用的版本:
ext {
set('snakeyaml.version','1.32')
}
要查看依赖版本的完整列表及其要覆盖的属性,您可以在此处浏览:
现在,当运行./gradlew dependecies
时,您可以看到, org.yaml.snakeyaml
已升级到 v1.32:
+--- org.springframework.boot:spring-boot-starter-actuator -> 2.7.3
| +--- org.springframework.boot:spring-boot-starter:2.7.3
| | +--- org.springframework.boot:spring-boot:2.7.3
| | | +--- org.springframework:spring-core:5.3.22
| | | | \--- org.springframework:spring-jcl:5.3.22
| | | \--- org.springframework:spring-context:5.3.22
| | | +--- org.springframework:spring-aop:5.3.22
| | | | +--- org.springframework:spring-beans:5.3.22
| | | | | \--- org.springframework:spring-core:5.3.22 (*)
| | | | \--- org.springframework:spring-core:5.3.22 (*)
| | | +--- org.springframework:spring-beans:5.3.22 (*)
| | | +--- org.springframework:spring-core:5.3.22 (*)
| | | \--- org.springframework:spring-expression:5.3.22
| | | \--- org.springframework:spring-core:5.3.22 (*)
| | +--- org.springframework.boot:spring-boot-autoconfigure:2.7.3
| | | \--- org.springframework.boot:spring-boot:2.7.3 (*)
| | +--- org.springframework.boot:spring-boot-starter-logging:2.7.3
| | | +--- ch.qos.logback:logback-classic:1.2.11
| | | | +--- ch.qos.logback:logback-core:1.2.11
| | | | \--- org.slf4j:slf4j-api:1.7.32 -> 1.7.36
| | | +--- org.apache.logging.log4j:log4j-to-slf4j:2.17.2
| | | | +--- org.slf4j:slf4j-api:1.7.35 -> 1.7.36
| | | | \--- org.apache.logging.log4j:log4j-api:2.17.2
| | | \--- org.slf4j:jul-to-slf4j:1.7.36
| | | \--- org.slf4j:slf4j-api:1.7.36
| | +--- jakarta.annotation:jakarta.annotation-api:1.3.5
| | +--- org.springframework:spring-core:5.3.22 (*)
| | \--- org.yaml:snakeyaml:1.30 -> 1.32
This answer is based on spring docs for v2.7.3 which can be found here: https://docs.spring.io/spring-boot/docs/2.7.3/gradle-plugin/reference/htmlsingle/
您始终可以通过pom.xml
中的<dependencyManagement>
块更改版本号:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.31</version>
</dependency>
</dependencies>
</dependencyManagement>
这将自动更改您的项目将使用的版本。 您可以通过之后运行mvn dependency:tree
来测试它。 它应该只显示 1.31 版的snakeyaml。
重要提示:确保在集成下一版本的 Spring Boot 后立即删除此块,因为它很可能包含增加的版本。 否则,您可能会在未来更新后无意中降级版本。
另请注意,某些 lib 版本与 Spring Boot 之间可能存在不兼容,因此可能无法始终以这种方式更新版本。
SnakeYAML 是 Spring Boot 中的托管依赖项,因此您只需将以下内容添加到pom.xml
的properties
部分即可使用 Z38008DD81C2F4D7985ECF6E0CE8AF1D1YAML:1.33 代替 2.33 启动 2.33。
<snakeyaml.version>1.31</snakeyaml.version>
我从我的 web 应用程序中排除了 snakeyaml 依赖项,它们工作正常。 当然我使用application.properties
,而不是application.yml
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.