如何在Java测试之前使Gradle编译Groovy测试

时间:2013-10-24 18:46:47

标签: java groovy gradle

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

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

我在src/test/java...中有一个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中不起作用,我该如何使其工作?

2 个答案:

答案 0 :(得分:8)

Gradle User Guide中所述,只传递给GroovyCompile任务的代码是联合编译的。因此要么将Java和Groovy代码放入src/main/groovy,要么重新配置源集:

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

对于测试,请将所有main替换为test

答案 1 :(得分:1)

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