groovy-macro 是在 2.5.8 版中加载的,而您正在尝试加载 2.5.12 版

问题描述

我使用的是 Eclipse 4.13,插件的 4.0.0 版和 Groovy 编译器 2.5 和 Spock 2.0-M2。

我们使用 Gradle 来管理我们的依赖项。最近,我们将 Groovy 库更新到 2.5.12,从那时起,在执行 Spock 测试时,我们收到以下错误

groovy-macro 是在 2.5.8 版中加载的,而您正在尝试加载 2.5.12 版

似乎 Spock 正在获取 2.5.8 版本。我想避免 Spock 获取 2.5.8,但只是手动修改执行 Spock 测试的项目的类路径并确保所有 Groovy 库都是 2.5.12 版似乎没有帮助,因为我得到了相同的错误

解决方法

我在 maven 项目、gmaven 插件和 spock 1.3 中遇到了同样的问题。

我使用 maven 依赖管理并导入了 groovy-bom 来解决版本冲突,但这没有帮助。

您必须使用与 spock 所依赖的 groovy 版本完全相同的版本。

对于 spock 2.0-M2,gradle.build 表示:

 if (variant == 2.5) {
      groovyVersion = "2.5.8"
      minGroovyVersion = "2.5.0"
      maxGroovyVersion = "2.9.99"
    } else if (variant == 3.0) {
      groovyVersion = "3.0.0"
      minGroovyVersion = "3.0.0"
      maxGroovyVersion = "3.9.99"
    } else {
    throw new InvalidUserDataException("Unknown variant: $variant. Choose one of: $variants")
  }

我不知道为什么会加载另一个 groovy-macro,尽管 mvn dependency:tree 打印了正确的 groovy-macro 版本。