问题描述
我使用的是 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
版本。