4

Gradle 的 Groovy 插件声称它是"supports joint compilation, which allows to freely mix and match Groovy and Java code, with dependencies in both directions".

但是,我认为这不适用于测试代码。

我有一个 Java“样本”测试,src/test/java...其中使用位于src/test/groovy.

尝试使用 Gradle 构建时,出现如下错误:

SwingJavaFXSampleAppTestInJava.java:23: error: cannot find symbol
SwingJavaFXSampleAppTest swingJavaFx = new SwingJavaFXSampleAppTest();

请注意,这SwingJavaFXSampleAppTest是一个尚未编译的 Groovy 类(在 Gradle 输出中,我可以看到它compileTestGroovy在尝试之前没有运行,compileTestJava因为前者依赖于后者)。

我可以使用 groovy-eclipse 插件使用 Maven 构建同样的项目。

为什么当 Gradle 声称支持以任何顺序编译时它在 Gradle 中不起作用,我怎样才能使它起作用?

4

2 回答 2

9

正如Gradle 用户指南中所解释的,只有传递给GroovyCompile任务的代码是联合编译的。因此,要么将 Java 和 Groovy 代码都放入src/main/groovy中,要么重新配置源集:

sourceSets.main.java.srcDirs = []
sourceSets.main.groovy.srcDirs = ["src/main/java", "src/main/groovy"]

对于测试,将所有出现的 替换maintest

于 2013-10-24T19:01:42.413 回答
1

您应该能够将您的 java 测试移动到src/test/groovy.

于 2013-10-24T19:00:24.050 回答