2016-09-30 106 views
4

我有三个用于scala,groovy和Java的测试文件夹。testCompiler任务之间的循环依赖关系

在Java中我有一个类与Groovy有依赖关系,而在Groovy中我有一个类与Scala有依赖关系。

所以我在gradle这个build文件添加此依赖关系:

compileTestGroovy.dependsOn compileTestScala 
compileTestJava.dependsOn compileTestGroovy 

但I'm接收的摇篮

Circular dependency between the following tasks: 
:compileTestGroovy 
+--- :compileTestJava 
| \--- :compileTestGroovy (*) 
\--- :compileTestScala 
    \--- :compileTestJava (*) 

(*) - details omitted (listed previously) 

任何想法I'm做错了这个错误?

问候

+0

为什么你必须添加compileTest任务依赖关系?如果你用这两行评论来构建会发生什么?如果所有三个测试文件夹都是同一个项目的一部分,则类依赖关系将自动解析。 – RaGe

+0

没有指定顺序,Java先走,然后是Groovy和最后的Scala。所以具有这些依赖关系的类不会编译,任务失败 – paul

回答

1

您需要使用joint compilation这基本上意味着你需要把源一起。从文档:

[...]可以处理Groovy代码,混合Groovy和Java代码,甚至 纯Java代码(虽然我们并不一定建议使用它 后者)。该插件支持联合编译,该编译允许您自由地混合和匹配Groovy和Java代码,并在两个方向上都依赖于 。例如,一个Groovy类可以扩展一个Java类 ,该类继而扩展一个Groovy类。这使得可以使用 作业的最佳语言,并在需要时重写其他 语言中的任何类别。