我試圖建立我的項目,有一些Java的源和Clojure的源代碼,在目錄結構如下所示:重新排序編譯任務gradle產出的構建任務
src
`-- main
|-- clojure
| `-- appc
| `-- core.clj
`-- java
`-- appj
`-- AppStarter.java
我已經裝了java
,clojure
和application
插件在我的gradle構建文件中。 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源代碼?
你說得對!添加該行後,gradle按照我希望的方式運行,但'tasks - all'中的順序沒有變化。我正在嘗試'build.dependsOn compileJava'。好吧。非常感謝,它現在有效。 –
java編譯器的輸出應正確放置在clojure編譯任務的類路徑中。我不依賴java編譯,因爲先驗不清楚哪一種方法是「正確的」。同樣,Java源代碼也可以依賴clojure部分生成的類。所以用戶必須明確指定他想要的。 – kotarak