我有一個複雜的gradle腳本,它在構建和部署一些netbeans項目到許多環境中時包裝了大量的功能。如何將一個Gradle腳本導入另一個?
該腳本工作得很好,但本質上它都是通過持有項目和環境信息的半打地圖配置的。
我想將任務抽象到另一個文件中,以便我可以簡單地在簡單的構建文件中定義我的地圖,並從其他文件導入任務。通過這種方式,我可以爲許多項目使用相同的核心任務,並使用一組簡單的地圖來配置這些項目。
任何人都可以告訴我如何以類似Ant的任務的方式將一個gradle文件導入到另一個文件中?到目前爲止,我已經對Gradle的文檔進行了翻查。
附加信息
低於湯姆的響應後,我想我會嘗試和澄清正是我的意思。
基本上我有一個運行一些子項目的gradle腳本。然而,子項目都是Netbeans項目,並且都有自己的ant build腳本,所以我有gradle中的任務來調用這些腳本。
我的問題是,我有一些配置在文件的頂部,如:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
我然後生成的任務,如:
projects.each({
task "checkout_$it.shortname" << {
// Code to for example check module out from cvs using config from 'it'.
}
})
我有許多種類的任務生成片段,並且它們都是通用的 - 它們完全依賴於項目列表中的配置。
所以,我要的是把這種在一個單獨的腳本,並在下面這種方式導入的方式:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
import("tasks.gradle") // This will import and run the script so that all tasks are generated for the projects given above.
因此,在這個例子中,tasks.gradle將所有的通用任務生成代碼,並將運行在主build.gradle文件中定義的項目。通過這種方式,tasks.gradle是一個可由所有大型項目使用的文件,這些項目由許多具有Netbeans ant構建文件的子項目組成。
考慮 「從適用: 'other.gradle'」 構建導入外部聲明。 (請參閱「12.4。使用外部構建腳本配置項目」此處http://gradle.org/0.9-preview-1/docs/userguide/tutorial_this_and_that.html#sec:configuring_using_external_script) –
@PetrGladkikh'apply from'立即執行外部任務。這在執行邏輯中可能不是最好的(也就是說,我希望在不想馬上執行任務時)。 –
上面的註釋中的這個語句是**不正確**:'apply from'立即執行外部任務。不要誤導。外部任務已配置,未執行。 – Jarekczek