Gradle混合源语言设置编译顺序

Kev*_*vin 7 gradle

我正在使用 gradle,并且继承了一个包含 Java、Groovy 和 Kotlin 的项目。我正在尝试将项目转换为仅一种语言,但在此期间我需要使特定的编译顺序正常工作:首先是 Java,然后是 Kotlin,然后是 Groovy。

我想我可以在以下位置执行此操作build.gradle

 compileJava.dependsOn = compileJava.taskDependencies.values - 'compileKotlin'
 compileKotlin.dependsOn compileJava
 compileGroovy.dependsOn compileKotlin
 classes.dependsOn compileGroovy
 compileGroovy.classpath += files(compileKotlin.destinationDir)
Run Code Online (Sandbox Code Playgroud)

基于我在这里读到的一些内容: https ://discuss.gradle.org/t/kotlin-groovy-and-java-compilation/14903/8

但我最终得到了一个循环依赖,如下所示:

* What went wrong:
Circular dependency between the following tasks:
:demo:compileJava
     \--- :demo:compileKotlin
         \--- :demo:compileJava (*)
Run Code Online (Sandbox Code Playgroud)

如果我没看错的话,它看起来像是告诉我compileJava依赖于compileKotlin,但我已经明确删除了该依赖项,所以我不确定发生了什么。