2013-10-08 60 views
3

我在搖籃以下的多項目設置爲構建其使用一些庫多個Android應用:在多項目設置中,Gradle會評估每個子項目。我可以忽略一些子項目嗎?

比方說,我的根目錄是/workspace

的目錄結構如下(這是不完整):

/workspace/       --> root dir for the gradle build 
/workspace/settings.gradle 
...    
/workspace/myapp1/Android/   --> contains the 1st app (has a build.gradle) 
/workspace/myapp2/Android/   --> contains the 2nd app (has a build.gradle) 
... 
/market_licensing/library/   ---> contains a lib (has a build.gradle) 
/play_apk_expansion/downloader_library/ ---> another lib (has a build.gradle) 

settings.gradle在/工作區/看起來是這樣的:

include ':market_licensing:library' 
include ':play_apk_expansion:downloader_library' 

include ':myapp1:Android' 
include ':myapp2:Android' 

當我在其中一個應用程序目錄中運行gradle時,它可以正常工作: 例如,/workspace/myapp1/Android>gradle clean可以正常運行。

但是,這也會評估myapp2的build.gradle項目。

這是根據Gradle手冊預計的。在http://www.gradle.org/docs/current/userguide/multi_project_builds.html中,部分56.3. Execution rules for multi-project builds表示「Gradle總是評估多項目構建的每個項目並創建所有現有任務對象。」。

我的問題是,這會減慢我的構建不必要的。不必要的原因是,當我在構建myapp1時,我不在乎myapp2。我希望圖書館處於良好的狀態,但我不在乎myapp2。這對於2款應用來說並不可怕,但想象一下有20款應用。我希望能夠儘快構建我目前正在開發的應用程序。

即使在評估階段,是否有辦法忽略其他子項目? 或者是否有其他方法來設置多個項目,這些項目依賴於相同的庫,但不相互依賴?

回答

3

正如您所指出的,gradle中的默認行爲是評估所有項目。有計劃(也是最初的工作開始)使未來更加細化。現在您可以檢查孵化功能「按需配置」。也許這可以幫助你。看看http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:cross_project_configuration的細節

歡呼聲,

+0

謝謝!這從命令行很好。後續問題:你碰巧知道如何讓Android Studio做到這一點? – treesAreEverywhere

+0

我對Android Studio並不熟悉,但在gradle配置中應該有一個選項來手動添加命令行選項 –

相關問題