2013-03-28 46 views
1

遞歸執行,如果我有這樣的搖籃:呼叫根本任務與子項目

RootProject 
+-- SubProjectA 
+-- SubProjectB 

和每個項目的gradle產出多的項目有一個任務「富」,我可以把它叫做根項目

RootProject>gradle foo 

而且還獲取子項目

:foo 
:SubProjectA:foo 
:SubProjectB:foo 

但執行如果我叫任務「:富」從一個子項目

RootProject\SubProjectA>gradle :foo 

只在根項目應該執行任務

:foo 

但不是在子項目「富」的任務。

有沒有辦法在子項目中調用所有項目中的'foo'?我在問這個,因爲我使用gradle eclipse插件,在那裏我只能訪問子項目,即我在eclipse中看到的項目。

順便說一句:(有點哈克)解決方案,我想出了迄今爲止

task fooAll(type:Exec) { 
    workingDir '..' 
    commandLine 'cmd', '/c', 'gradle foo' 
} 

回答

1

解決任務的(如foo),以任務爲啓動目錄的功能,默認爲當前目錄。您可以使用-p命令行選項更改起始目錄(請參閱gradle --help)。所以你必須做一些像gradle foo -p ../

另外導入根項目可能是更好的解決Eclipse問題的方法。 Eclipse工具非常好地處理分層目錄佈局。

PS::foo是任務路徑。它指的是根項目(:)中名爲foo的任務。

+0

我將根項目導入eclipse(不知道這是可能的,但它是),使它成爲一個gradle項目,現在我可以調用根項目上的任務。不幸的是,gradle eclipse插件以合格的方式調用任務,即它調用':foo'而不是'foo'。所以只有根項目上的任務'foo'被執行。 –

+0

我想知道該插件是否已經支持任務名稱,但是您的問題聽起來就像是一樣。你有最新版本嗎? –

+0

我的插件版本是3.1.0.201210040512。根據eclipse更新和市場客戶端,沒有更新。到目前爲止,我還沒有找到一種方法來改變Gradle Launch Configurations來使用任務名稱而不是路徑。 –