簡體   English   中英

Gradle編譯生成的java文件

[英]Gradle compile generated java file

我正在嘗試將一個大項目轉換為使用當前使用makefiles狀態的gradle

我在某個時候碰到了一堵牆。 假設我們有以下目錄樹(為簡單起見省略了很多東西):

root
|-- src
|    +-- main
|         +-- java
|              +-- com
|                  +-- app
|                      |-- a
|                      |-- b
|                      +-- c
+-- build.gradle

現在讓我們假設com.app.c包中存在一個帶有主類的java文件,該主文件用於在同一目錄下生成一個新的java文件,然后編譯該目錄。 com.app.c也依賴於其他包。

使用makefile,您可以執行以下操作(一個簡單的算法):

  1. 編譯包`com.app.a`和`com.app.c`。
  2. 移動到包com.app.b`包的目錄,只編譯創建生成文件所需的文件。
  3. 通過在用於生成的文件中運行main函數來創建生成的文件。
  4. 編譯整個`com.app.b`包,現在包含生成的文件。

使用gradle雖然我不能做那樣的事情(或者至少我認為我不能)。

我想做的是創建一個JavaExec任務,它將運行生成生成的java文件的文件,並使其在compileJava之后運行,並使用compileJava完成。 但顯然這是任務與死胡同之間的循環依賴。

有沒有人做過或遇到類似的東西? 如果有人可以提供幫助,我會很感激。

請注意,我無法輕松地將文件生成移出該文件,因為它具有一些深度依賴性...

看起來我沒有那么好搜索。

在這種情況下,使用解決方案也適用。

不同之處在於您必須具有以下配置:

task generateFile(type: JavaExec) { ... }

task compileGeneratedFile(type: JavaCompile) { ... }

generateFile.mustRunAfter compileJava
generateFile.finalizedBy compileGeneratedFile
generateFile.onlyIf { !file("path/to/file").exists() }

這似乎可以解決問題! 只需發布答案,以便任何有相同問題的人都會發現它更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM