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

2024-05-10

我正在使用 Gradle 5 的 BOM(物料清单)feature https://docs.gradle.org/5.0/userguide/managing_transitive_dependencies.html#sec:bom_import。这是我对 JUnit 5 依赖项的描述:

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 http://central.maven.org/maven2/org/junit/junit-bom/5.4.0/junit-bom-5.4.0.pom我们看到所有org.junit.jupiter列出了依赖项和版本5.4.0(解决项目中的5.1.1)以及所有org.junit.platform列出了依赖项和版本1.4.0在项目中正确解决。

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

EDIT:

我使用了 Sormuras 响应并将所有 BOM 移到了顶部dependencies {}阻止但仍未获得版本5.4.0。然后我怀疑它可能来自Gradle Spring 依赖管理 https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/#managing-dependencies我使用的插件,所以当我将其注释掉时,我得到了版本 JUnit 5.4.0。如何禁用来自 Gradle Spring 依赖管理插件的 JUnit?

FINALLY:

我决定使用Spring Boot 依赖项 BOM https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies直接删除 Gradle 插件:

implementation(platform("org.springframework.boot:spring-boot-dependencies:2.0.5.RELEASE"))

我想该插件是为 Gradle 5 之前的 Gradle 版本创建的,其中您无法使用 BOM 文件。现在有了 BOM 支持,我可以直接包含它。这样我的 JUnit 版本就是我在enforcedPlatform() block.

我接受了 Sam Brannen 下面的回答,因为他很好地解释了问题是如何发生的以及如何解决它,我认为这对于那些使用旧版本 Gradle 的人来说是相关的。


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

对于初学者来说,如果您使用 Spring 的依赖管理插件,则不应导入junit-bom因为这会导致这些依赖项的重复(并且可能存在冲突)管理。

除此之外,每当您使用 Spring 的依赖管理插件并想要覆盖托管版本时,您都必须通过覆盖插件使用的 BOM 中定义的版本的确切名称来实现。

这在 Spring Boot 中有记录对于 Gradle https://docs.spring.io/spring-boot/docs/2.1.2.RELEASE/gradle-plugin/reference/html/#managing-dependencies-customizing and 对于 Maven https://docs.spring.io/spring-boot/docs/2.1.2.RELEASE/reference/htmlsingle/#using-boot-maven-parent-pom.

对于 Spring Boot,JUnit Jupiter 版本的名称是“junit-jupiter.version”。您可以找到 Spring Boot 2.1.2 所有托管版本的名称here https://github.com/spring-projects/spring-boot/blob/v2.1.2.RELEASE/spring-boot-project/spring-boot-dependencies/pom.xml.

因此,在 Gradle 中您可以按如下方式覆盖它。

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

你可以看到我已经做到了here https://github.com/sbrannen/spring-events/blob/d803b0fe2e007f2264973d135c4b5ac814f49477/build.gradle#L38.

使用 Maven,您可以按如下方式覆盖它。

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

更多背景信息请参见此处:https://docs.spring.io/platform/docs/current/reference/html/getting-started-overriding-versions.html https://docs.spring.io/platform/docs/current/reference/html/getting-started-overriding-versions.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle 5 JUnit BOM 和 Spring Boot 版本不正确 的相关文章

  • @SubscribeMapping 与 @MessageMapping

    当在 Spring Boot 中使用 websockets 时 我见过使用以下示例 Configuration EnableWebSocketMessageBroker public class WebSocketConfig extend
  • java.exe 以非零退出值 1 结束

    只是为了开始 我并不是真正尝试从 Android 中的 xlsx 文件中读取单元格 我已经尝试了几乎所有我在 Google 上搜索到的内容 但是每次 在两台不同的 PC 上 都是 Java 1 7 0 79 当我尝试构建 运行 这个应用程序
  • Kotlin 支持 Java 11 吗?

    我尝试使用 Kotlin V1 2 70 Gradle V4 10 1 和 Java 11 使用 gradle 编译项目时 出现错误 未知 JVM 目标版本 11 支持的版本 1 6 1 8 Kotlin 编译器是否支持 Java 11 生
  • gradle 神器插件

    我是artificialy 和 teamcity 的新手 我尝试使用 gradle artifactory 插件 但它引发了我以下错误 任何人都可以告诉我这个错误是什么并帮助我解决一些问题 Error is Caused by org co
  • 在 Spring Boot 应用程序中启用 Spring 框架的日志记录

    我已经使用 spring boot 创建了简单的网络应用程序 我想为 springframework 包启用调试日志 我知道如何在普通 spring mvc 项目中启用日志记录 我在这里尝试了相同的操作 但它不起作用 有人可以帮我吗 我的
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 如何使用本地属性从 gradle 运行 micronaut

    我想使用 本地 环境变量从 Gradle 命令行运行 Micronaut 服务器 常规命令 gradlew bat run 将使用 application yml 文件中定义的默认变量 我想用本地环境的值覆盖其中一些 因此需要指定系统属性m
  • 无法解析:com.github.PhilJay:MPAndroidChart:v2.1.4

    我在用着MPAndroidChartandroid studio 中的库 但是当我尝试同步 gradle 时 出现错误 如下图所示 Gradle文本在这里编译MPAndroidChart图书馆 compile com github Phil
  • Gradle 构建:不支持从任务容器中删除任务

    我正在尝试使用 Ubuntu 终端构建 Gradle 项目 但它向我抛出以下错误 我没有找到任何有价值的解决方案 我使用的是gradle6 0 1 谢谢 失败 构建失败并出现异常 在哪里 脚本 home jamshaid cas serve
  • 如何生成源文件并用gradle编译

    我有一个类似于以下内容的 gradle 构建脚本 apply plugin war task genSources lt lt here I generate some java files making sure that source
  • 如何使用Spring @Value注解来设置值?

    最近开始学习Spring核心框架 我对将 spring 与 XML 一起使用很有信心 但只想尝试基于注释的程序 但现在我陷入了这个 Value 注释 我有一个类 Line 扩展 Shape 接口 它使用 Point 对象作为依赖项 Poin
  • 使用 Spring boot 测试执行集成测试时无法注入自定义过滤器

    我在 spring 控制器中有 POST 方法 并且我正在尝试使用 Test Rest 模板交换在控制器上运行测试方法 控制器 java RequestMapping path rest projects RestController pu
  • Jhipster:对非管理员隐藏实体

    问候 Java 潮人 我刚刚生成了一个 jhipster 项目并创建了一些实体 我想通过将某些实体限制为仅管理员用户来隐藏它们 我该如何实现这一目标 Thanks 初读Spring安全文档 http docs spring io autor
  • Spring Boot 和 Kafka,Producer 抛出 key='null' 异常

    我正在尝试使用Spring Boot with Kafka and ZooKeeper with Docker docker compose yml version 2 services zookeeper image wurstmeist
  • 使用 Junit5 对 LiveDataobserverForever 进行单元测试会导致 NullPointer 异常

    我正在使用 Android 数据绑定来监听实时数据更改 并且我想观察视图模型级别的更改 而不是观察片段 然后向视图模型发送回调 这observerForever很有趣 因为它对我有用 但是 当我运行测试时 出现以下错误 java lang
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr
  • CrudRepository 未从 schema.sql 读取数据

    Setup 我有一个带有简单 Entity Customer 对象和 CustomerRepository 的 spring boot 应用程序 我想用描述的测试数据预加载数据库在我的另一个问题中 https stackoverflow c
  • 如何在构建持续时间和 RAM 使用方面优化 gradle 构建性能?

    我目前正在为我的多模块 Web 应用程序从 ant 切换到 gradle 目前看来当前版本的 Gradle M9 可能已经达到了极限 但也许 希望 这只是我对 Gradle 概念理解不够好或者不知道 神奇的性能提升开关 的问题 我很高兴收到
  • 如何在 Android Studio 中构建项目测试目录?

    目前还没有这方面的约定 但是现在我如何构建 Android Studio 的测试目录呢 Android 测试基础 http developer android com tools testing testing android html页面
  • 该项目可能使用的 Gradle 版本不包含“compileSdkVersion()”方法

    当我尝试运行最初在 Eclipse ADT 上创建的项目时 我遇到了这个问题 Error 17 0 Gradle DSL method not found compileSdkVersion Possible causes ul li Th

随机推荐