2014-03-12 118 views
0

我正在使用我的項目上的gradle wrapper,該項目生成一些文件以在主機上下載並安裝Gradle。這些文件被檢入到項目中。我的項目結構如下:升級Gradle Wrapper

/common/common.gradle 
/module-a/build.gradle 
/module-b/build.gradle 
/module-c/build.gradle 

我的每一個項目,從包含任務共享common.gradle文件應用的通用設置:

task wrapper(type: Wrapper) { 
    distributionUrl = "http://<nexus>:8081/nexus/content/repositories/thirdparty/org/gradle/gradle-bin/1.10/gradle-bin-1.10-bin.zip" 
} 

在每個項目中,這讓我跑「gradle這個包裝器「並生成gradlew腳本,該腳本將執行gradle的下載版本。當我查看由此任務生成的gradle-wrapper.properties(在每個子項目中)時,我的distributionUrl是來自我的包裝任務的絕對路徑,而不是對common.gradle中的設置的動態/相對引用。

那麼當我想升級到下一個gradle版本時會發生什麼?我是否需要在每個項目中重新運行gradle包裝?有沒有辦法讓distrbutionUrl引用共享屬性?

任何見解,將不勝感激。

+0

你是在談論一個單一的構建,還是許多構建?每個構建應該安裝一次Gradle Wrapper,而不是每個(子)項目安裝一次。 –

+0

嘿彼得,看起來我每個子項目都要做一次。我編輯了我的問題來澄清。我如何去做每一次構建一次?我應該在根級別刪除build.gradle嗎? – dev

+0

只有根'build.gradle'應該聲明一個包裝器任務(在最近的Gradle版本中,這個任務甚至會自動聲明),因此包裝器任務應該只對根項目執行。每個版本(在根目錄中)只應有一個'gradlew'和'gradlew.bat'腳本,以及一個'gradle/wrapper'目錄。 –

回答

0

我解決了這個問題,現在只在父目錄運行gradle這個包裝,所以我的項目結構是這樣的:

project1 
project2 
<gradlew files> 

在我的CI服務器,然後我使用-p選項來指定子目錄。就像這樣:

./gradlew -p project1 <target> 

這適用於我們現在到gradlew隨着彼得提到一個二進制文件。見GRADLE-1378