【发布时间】:2018-04-25 15:31:06
【问题描述】:
我有一个使用 JDK 9 语法编译的 Java 库。但是,我使用的是 spock-core:1.0-groovy-2.4,它不支持 JDK 8+ 语法。因此,在我的 Java 代码中,我可以使用 lambda、默认方法和方法引用。但是,在我的测试中我不能。我必须对 lambdas 使用笨拙的解决方法,在其中编写 Groovy 闭包,然后使用 as 关键字将其转换为 Function<...>。但是,诸如Class::method 之类的方法引用之类的其他语法根本无法编译。下面是我的build.gradle 的依赖部分。
如何升级它以使用支持较新版本 Java 的较新版本 Groovy?
那里的所有文档似乎都已过时,并且只引用了 Groovy 2.4。
dependencies {
testCompile(
'junit:junit:4.12',
'org.codehaus.groovy:groovy-all:2.4.4',
'org.spockframework:spock-core:1.0-groovy-2.4',
'org.springframework.boot:spring-boot:1.2.1.RELEASE',
'cglib:cglib-nodep:2.2.2',
'com.opencsv:opencsv:4.1'
)
}
【问题讨论】:
-
您是否尝试过引用您喜欢的版本(如果需要,将其从 spock 中排除)?
-
@cfrick 你的意思是,只需输入它,就像将行更改为
org.codehaus.groovy:groovy-all:2.6.0?问题是以下几行也指定了 groovy 版本(据我所知,它们应该匹配)并且一旦我更改了 spock 版本,它就会告诉我没有为该版本定义 spock 库。但是,我无法接受这么多年过去了,没有办法合并 Java 8 语法。我只是错过了一些东西 -
您可以使用
org.spockframework:spock-core:1.2-groovy-2.4-SNAPSHOT,它没有锁定到 groovy-2.4,所以您应该能够使用 groovy 2.6 或 3,请注意这些是 alpha 版本,并且 spock 没有经过测试。
标签: java spring gradle groovy spock