2013-02-01 40 views
5

我有一個多項目gradle構建,我在父構建中聲明瞭一個使用在子項目中聲明的變量的任務(值可以根據子項目進行更改) 。但是,在配置階段出現錯誤,該變量不存在。我的設置是這樣在子任務中定義的父任務中的gradle use變量

的build.gradle(頂層)

subprojects { 
    myTask { 
    prop = valueDefinedInChild 
    } 

} 

然後

的build.gradle(子項目)

​​

有沒有辦法正確地做到這一點?

回答

10

有一種方法可以做到這一點(project.evaluationDependsOnChildren()),但我建議只使用它作爲最後的手段。相反,我會配置在頂層的共性,並在子項目水平的差異:

的build.gradle(頂層):

subprojects { 
    task myTask { // add task to all subprojects 
     // common configuration goes here 
    } 
} 

的build.gradle(子項目):

myTask { 
    prop = 'someValue' 
} 

避免重複自己的另一種方法是將通用代碼分解爲單獨的腳本,並讓子項目將其包含在apply from:中。如果邏輯僅適用於選定的子項目,或者希望避免父項目與子項目之間的耦合(例如,使用Gradle的新功能configuration on demand),則這是一個不錯的選擇。

+0

謝謝我最終將公共配置移動到子項目的頂部和子項目特定配置。效果很好。 –

+0

你讓我的一天,謝謝 –