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

我使用gradle,并且inheritance了所有Java,Groovy和Kotlin的项目。 我试图将项目转换为一种语言,但在此期间,我需要得到一个特定的编译顺序:Java,然后是Kotlin,然后是Groovy。

我以为我可以在build.gradle做到这build.gradle

  compileJava.dependsOn = compileJava.taskDependencies.values - 'compileKotlin' compileKotlin.dependsOn compileJava compileGroovy.dependsOn compileKotlin classes.dependsOn compileGroovy compileGroovy.classpath += files(compileKotlin.destinationDir) 

根据我读的一些东西: 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 (*) 

如果我正确地阅读它,它看起来像它告诉我compileJava依赖于compileKotlin ,但我已经明确地删除了依赖关系,所以我不知道发生了什么事情。