2013-07-11 55 views
1

調用uploadArchives爲了釋放我的系統,我創建了許多其他項目的要求uploadArchives一個釋放器項目。搖籃發佈系統任務 - 對子項目

在我的項目,我有以下文件:

settings.gradle

include '../proj-a', '../proj-b' 

的build.gradle

task releaseSystem() { 
    // what goes here? 
} 

應該採取什麼releaseSystem任務的內容是這樣我可以撥打gradle releaseSystem並讓它運行uploadArchives我的每個子項目?

我已經嘗試了多種選擇,但沒有成功迄今。

感謝您能提供任何見解。

ANSWER

我與優雅的解決方案,提供的gradle我的問題不斷深刻的印象。這是我的最終解決方案(如彼得指出,下同):

settings.gradle

include 'proj-a', 'proj-b' 
project (':proj-a').projectDir = new File(settingsDir, '../proj-a') 
project (':proj-b').projectDir = new File(settingsDir, '../proj-b') 

的build.gradle

task releaseSystem() { 
    dependsOn { 
     [ 
      subprojects.build, 
      subprojects.uploadArchives 
     ] 
    } 
} 

注意,既然我的倉庫是Maven倉庫當我最初包括「../proj-a」在我settings.gradle,它產生與artifactId的../proj-a勁歌這是無效的。我必須將我的settings.gradle更改爲上述系統的格式,以便正確地將poms放在一起,併成功完成uploadArchives任務。

回答

2

假設所有子項目有uploadArchives任務:

task releaseSystem { 
    dependsOn { subprojects.uploadArchives } 
} 

注意,這將無法運行的子項目測試。

+0

我和gradle這個怎麼優美的不斷深刻的印象。謝謝你的答案。在我的情況下還有一個問題。我的倉庫是maven倉庫,所以當以這種方式運行時,它會創建無效的pom文件,因爲artifactId具有「../」進行處理。任何方式在這個? – dev

+0

我通過使用projectDir設置找到了解決此問題的方法。將更新上面的問題。再次感謝 – dev