当前位置: 首页 > 知识库问答 >
问题:

Gradle 5 JUnit BOM和Spring Boot版本不正确

庄浩言
2023-03-14

我正在使用Gradle5的BOM(物料清单)功能。这是我对JUnit5依赖项的描述:

testImplementation(enforcedPlatform("org.junit:junit-bom:5.4.0")) // JUnit 5 BOM
testImplementation("org.junit.jupiter:junit-jupiter-api")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
testImplementation("org.junit.jupiter:junit-jupiter-params")

我的假设是,提供BOM将解决5.4.0依赖关系的版本。但是,它们被解析为5.1.1。我不知道为什么。(我还请求EnforcedPlatform()锁定指定的版本)

检查JUnit 5的BOM,我们看到所有org.JUnit.jupiter依赖项都与版本5.4.0一起列出(在项目中解析为5.1.1),所有org.JUnit.platform依赖项都与版本1.4.0一起列出(在项目中正确解析)。

我不确定我错过了什么,希望在这里得到一些帮助。谢谢!

编辑:

我使用了Sormuras响应并移动了依赖项{}块顶部的所有BOM,但仍然无法获得版本5.4.0。然后我怀疑它可能来自我使用的Gradle Spring依赖项管理插件,所以当我注释掉它时,我得到了JUnit 5.4.0版本。如何禁用来自Gradle Spring依赖项管理插件的JUnit?

我决定直接使用Spring Boot Dependencies BOM并删除Gradle插件:

实现(平台(“org.springframework.boot:spring-boot-dependencies:2.0.5.release”))

我想这个插件是为Gradle5之前的Gradle版本创建的,在这些版本中你不能使用BOM文件。现在有了BOM的支持,我可以直接包括它。这样,我的JUnit版本就像我在EnforcedPlatform()块中指定的那样。

共有1个答案

太叔俊侠
2023-03-14

如何禁用来自Gradle Spring依赖项管理插件的JUnit?

首先,如果您使用的是Spring中的依赖关系管理插件,则不应该导入junit-bom,因为这会导致对这些依赖关系的重复(并且可能发生冲突)管理。

除此之外,无论何时使用Spring中的依赖项管理插件并想要覆盖托管版本,都必须覆盖插件使用的BOM中定义的版本的确切名称。

对于Spring引导,JUnit Jupiter版本的名称是“junit-jupiter.version”。您可以在这里找到Spring Boot2.1.2的所有托管版本的名称。

因此,在Gradle中,您将重写它,如下所示。

ext['junit-jupiter.version']=“5.4.0”

对于Maven,您可以按如下方式重写它。

<properties>
    <junit-jupiter.version>5.4.0</junit-jupiter.version>
</properties>

更多背景信息请访问:https://docs.spring.io/platform/docs/current/reference/html/getting-start-overring-versions.html

 类似资料:
  • 问题内容: 好的,我对Mac和OSX有点陌生,但是我选择了一个,以便可以使用我的Java程序对一些Java程序进行故障排除,因为我工作的公司使用OSX和Windows机器的组合。我遇到的问题是,当我从Oracle网站安装Java 7时,它会更新首选项菜单,并在双击它们时似乎可以正确执行.jar文件,但是终端窗口的版本仍为1.6.0_43并运行由于版本较旧,终端上的相同.jar文件会导致运行时错误。

  • 我已经从1.3更新了Spring启动版本。5至1.4。0,我得到以下错误 使用Camunda BPM,版本为Spring Boot:(v1.4.0.发行版)Camunda BPM:(v7.5.0)Camunda BPM Spring Boot Starter:(v1.2.1) 对卡蒙达的依赖, 对于包装,我们使用以下插件, 请让我知道从1.3. x更新到1.4.0Spring引导失败的原因

  • 好吧,我对Mac和OSX有点陌生,但我选择了一个,这样我就可以用一个对我的Java程序进行一些故障排除,因为我工作的公司使用OSX和Windows机器的组合。我遇到的问题是,当我从Oracle的网站安装Java7时,它更新了首选项菜单,双击.jar文件时显示可以正确执行这些文件,但终端窗口的版本仍然是1.6.0_43,从终端运行相同的.jar文件会导致运行时错误,原因是版本较旧。 当我导航到/li

  • 该项目需要一个自定义的RedisConnectionFactory,并发现了一个问题:当使用LettuceConnectionFactory时,运行时总是报告java.lang.NullPointerException,而JedisConnectionFactory可以通过测试。我想LettuceConnectionFactory是否对redis和Springboot有版本限制? 开发环境: Sp

  • 我使用Spring Initializr生成了一个Spring Bootweb应用程序,使用macOS Sierra中的嵌入式Tomcat+Thymeleaf模板引擎。我想在Mac OS中使用系统变量User Home Folder Name 但我在启动应用程序时出现了这个错误

  • 问题内容: 我创建了一个新的Rails项目,调用 然后当我在目录中运行 我收到关注错误 我见过其他人遇到此错误,但他们通常是linux用户,并且我正在运行Windows。我试图重新安装Rails(railsinstaller.org)和mysql 5.5。我既使用了32位版本,也使用了64位版本 问题答案: 这里似乎已经有几个问题。您尝试过他们的解决方案吗? 相关部分在这里: