如何使compileKotlin依赖于gradle中的compileJava

时间:2017-12-29 11:52:11

标签: gradle kotlin

将kotlin与gradle一起使用时,compileKotlin会在compileJava之前执行。我需要在compileJava之前执行compileKotlin。我尝试了compileKotlin.dependsOn(compileJava),但它给出了循环依赖关系构建失败。

Circular dependency build failure

我也试过

compileJava.dependsOn = compileJava.taskDependencies.values - compileKotlin

但是,它仍然会在compileKotlin之前执行compileJava

如何在compileJava之前执行compileKotlin

1 个答案:

答案 0 :(得分:1)

我在使用gradle,Java,Kotlin,Scala和Groovy的 spike测试中都遇到了相同的问题-这不是一个真实的场景,我知道!!但是注意到了(默认情况下,即无需任何显式配置)

  1. compileJava取决于compileKotlin
  2. compileScala取决于compileJava
  3. compileGroovy取决于compileJava

这限制了我对构建源代码的顺序的选择:正如您所告诉的,Java编译不能在Kotlin编译之前进行,并且相反,Groovy和Scala编译不能在Java编译之前进行(这是我的初始目标)。

我的想法是获得所需结果的最简单方法是将我的源代码分为四个不同的项目,设置一个多模块项目:我可以将问题从定义任务依赖关系(如我所无法控制的)转移到定义模块依赖关系(我可以通过计划依赖关系管理非常简单地使用依赖项中的compile project(':my-dependend-on-project')来控制模块依赖关系) em>项目的build.gradle)。

这是一个非常老的问题,所以我想您已经找到了解决方案;无论如何,我对您对此主题的结论感兴趣,对此我很感兴趣。