2013-11-29 104 views
3

我有一個maven多模塊項目(請參閱附件中的結構圖)。我正在遷移到Gradle。Gradle:有條件的包含子項目

Project Structure

我們有內部AppBuild/pom.xml的如下所示的多個配置文件;並且我們使用AppBuild的-P選項運行我們的maven build。

Profile Structure

由於我是新來的搖籃,我不能決定什麼是去它的最好方式。現在,我想根據-P的一些論點,在settings.gradle中加入一些條件include,但我不太確定。有人可以幫助我如何解決這個問題嗎?舉一些例子,最好的方法是什麼?

在此先感謝。

〜NIRANJAN

+0

解決此問題的一種非gradle方法:製作一些備用settings.gradle文件,然後根據需要將其移動一些腳本。 – spy

回答

1

條件包括是不是在搖籃簡單(這不是一個一流的功能),而且目前還不清楚爲什麼你會需要它這麼幾個子項目。我建議不要開始,並將所有四個子項目添加到settings.gradle

+0

嗨,Peter,對於我展示的一個例子,我的原始項目在AppBuild文件夾中有15個子文件夾,我們從這些文件(4個Web應用程序WARs,2個TAR文件)中生成6個不同的工件。而且,我們不希望總是運行所有的構建;因此,通過maven,我們添加了需要模塊的多個配置文件。因爲,該指令是轉移到Gradle,我們想要類似的功能。我正在考慮在Gradle中添加'-P',並基於'include'所需的項目。感謝您能否幫助我們爲此問題提供另一種解決方案。 – Niranjan

+0

Gradle足夠聰明,只需重建需要的東西,因此你應該沒問題。我不建議嘗試和模仿Maven的條件包含 - 對於您的項目數量來說不應該是必要的,而且很難實現。如果有必要,可以使用'--parallel'和'--configuration-on-demand'進一步加速構建(請參閱[Gradle用戶指南](http://gradle.org/docs/current/userguide/userguide_single)。 html)的細節)。 –

+0

我有一個類似的用例,需要在指定的構建配置文件中禁用某些模塊。另一個監督與gradle。如果module/build.gradle的其他位不正常,settings.gradle顯然不支持if-then-else結構。 – spy

1

我最近遇到了同樣的問題,因爲我有一個多項目構建,我只想在某些場合包含一個特殊的子項目。
這個特殊的子項目只依賴於另外一個子項目,並且需要大約1-2分鐘來進行配置。所以如果我不想構建它,我不想將它包括在內。這可以節省一些編譯時間。 所以,我所做的就是修改settings.gradle

if(file('MySpecialProject').exists()){ 
    include ':MySpecialProject' 
} 

當我不想建立MySpecialProject我可以簡單地重命名/刪除的文件夾。在我的情況下,該文件夾是一個符號鏈接,因爲這個「子項目」駐留在它自己的git倉庫中。 即使@spy寫道如果/ then/else在設置中不可行,它確實對我有用。

相關問題