2014-03-12 54 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