0

目前我的项目使用spring boot starter test:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>2.3.8.RELEASE</version>
    <scope>test</scope>
</dependency>

然而,尽管有测试范围,它还是将 spring-core(在此版本中是一个易受攻击的 tpl)作为编译范围传递依赖项引入,并且它出现在我编译的二进制文件中。

我知道我可以通过使用测试范围显式拉动弹簧芯来解决此问题:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.2.12.RELEASE</version>
    <scope>test</scope>
</dependency>

然而,这不应该是必要的。为什么仅在测试中可用的依赖项将依赖项拉入编译范围?

4

1 回答 1

0

在 J Fabian Meyer 发表评论后,我仔细检查了一遍。当 spring 核心出现在依赖树中的 spring-boot-starter-test 下时,它被 spring-boot-starter-web 拉入了编译范围。

我的猜测是 spring-boot-starter-test 提取了更高版本的 spring-core 这就是它出现在树中的原因

于 2022-02-18T21:13:57.810 回答