在gradle的构建任务中重新编译编译任务

时间:2012-10-15 15:43:43

标签: java groovy clojure build-process gradle

我正在尝试使用以下目录结构构建具有一些java源代码和clojure源代码的项目:

src
`-- main
    |-- clojure
    |   `-- appc
    |       `-- core.clj
    `-- java
        `-- appj
            `-- AppStarter.java

我已在我的gradle构建文件中加载了javaclojureapplication个插件。 Clojure插件来自https://bitbucket.org/kotarak/clojuresque/overview,版本 1.5.2

这里,clojure代码core.clj具有使用java编写的类的代码。但是java源代码中没有任何内容依赖于clojure代码。

现在,当我gradle tasks --all时,我看到了

...
classes - Assembles the main classes.
    compileClojure - Compile the main Clojure source.
    compileJava - Compiles the main Java source.
    processResources - Processes the main resources.
...

因此,build任务将首先编译我的clojure源,然后编译java源。这显然不起作用,因为clojure代码依赖于java部分。所以我需要在compileJava之前发生compileClojure

更改应用clojurejava插件的顺序没有任何效果。

由于clojure插件是新的,我尝试使用groovyscala插件。我在每种情况下都得到了以下内容。

...
classes - Assembles the main classes.
    compileGroovy - Compile the main Groovy source.
    compileJava - Compiles the main Java source.
    processResources - Processes the main resources.
...

...
classes - Assembles the main classes.
    compileJava - Compiles the main Java source.
    compileScala - Compile the main Scala source.
    processResources - Processes the main resources.
...

我想应该有办法重新排序这些权利吗?我无法在文档中找到(尽管他们真的好!)。有没有办法告诉gradle首先编译我的java源码,然后编译clojure源?

1 个答案:

答案 0 :(得分:3)

获得正确的订单就像compileClojure.dependsOn(compileJava)一样简单。另一个问题是Java类是否正确放置在Clojure编译器的类路径上。

PS:gradle tasks输出中的任务顺序没有说明任务执行的顺序。任务执行顺序完全取决于任务依赖性。