2017-08-18 126 views
0

我有一個gradle這個多項目的設置,象這樣一個有點扁平結構:運行從一個子項目gradle這個任務,未知根

RootProject/ 
    build.gradle 
    settings.gradle 

SubProjectA/ 
    build.gradle 

anotherDirectory/ 
    SubProjectB/ 
     build.gradle 
    SubProjectC/ 
     build.gradle 

根項目僅僅是一個根版本。它將所有其他項目聯繫在一起。 SubProjectB取決於SubProjectC,並且C取決於A.

從根項目運行任務按預期工作。我可以運行gradle :SubProjectB:build,它將構建SubProjectB及其依賴關係而不會出錯。

我的問題是,如果我嘗試從一個子項目的目錄運行一個任務,它會失敗,如果該子項目取決於任何其他子項目,因爲它不知道其他任何其他沒有根項目的設置文件。所以從它的目錄運行A的構建可以工作,但運行B或C將會失敗。

在這個結構中,我可以做什麼來定義根項目的實際內容,所以如果我從B運行gradle build,它的行爲與從根項目的目錄運行gradle :SubProjectB:build一樣?

最終目標是通過命令行更輕鬆地使用gradle,並在子項目上獲取功能默認任務。這樣,我應該能夠雙擊項目的Eclipse的Gradle任務列表,並讓它運行默認任務,就像它從根目錄運行任務一樣。

回答

0

在這種情況下,您可以使用composite builds。假設你在SubProjectA並且想要針對SubProjectB構建。在你可以執行以下命令:

gradle --include-build ../anotherDirectory/SubProjectB run 

SubProjectB將先建,然後SubProjectA

相關問題