我正在尝试使用以下目录结构构建具有一些java源代码和clojure源代码的项目:
src
`-- main
|-- clojure
| `-- appc
| `-- core.clj
`-- java
`-- appj
`-- AppStarter.java
我已在我的gradle构建文件中加载了java
,clojure
和application
个插件。 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
。
更改应用clojure
和java
插件的顺序没有任何效果。
由于clojure插件是新的,我尝试使用groovy
和scala
插件。我在每种情况下都得到了以下内容。
...
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源?
答案 0 :(得分:3)
获得正确的订单就像compileClojure.dependsOn(compileJava)
一样简单。另一个问题是Java类是否正确放置在Clojure编译器的类路径上。
PS:gradle tasks
输出中的任务顺序没有说明任务执行的顺序。任务执行顺序完全取决于任务依赖性。