java - 在 gradle 的构建任务中重新排序编译任务

标签 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部分。所以我需要 compileJavacompileClojure 之前发生。

更改 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 源代码?

最佳答案

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

PS:gradle tasks 输出中的任务顺序没有说明任务执行的顺序。任务执行顺序完全由任务依赖关系决定。

关于java - 在 gradle 的构建任务中重新排序编译任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12899185/

相关文章:

java - 如何在 Java 中对 ZipOutputStream 进行单元测试

hibernate - Grails和Hibernate:未知实体:com.mypackage.Role

android - 为什么要在 build.gradle 中打印发布和调试消息?

grails - Groovy “except”语法?

java - Eclipse Helios Mac OS X 10.6.5 有性能问题

java - 使用 Java 创建自定义 UI 元素

clojure - 在 leiningen 中定义项目特定任务

Clojure静态内部类实例化问题(互操作问题)

Clojure 静态类型,第 2 部分

java - 出错后如何执行RollBack?