如何在要用于包装器的项目中包含 Gradle 分布

How to include a Gradle distribution in the project to be used for the wrapper

我想在项目文件夹中包含 Gradle 的特定版本,这样当我使用 Gradle 包装器时,它就不会从远程存储库下载它。

我下载了我需要的 Gradle 版本 (gradle-4.0-bin.zip) 并将该 zip 文件放入项目的 gradle/wrapper/ 文件夹中(使用 gradle wrapper命令)。 然后我以这种方式编辑 gradle-wrapper.properties 文件:

distributionUrl=file:///Users/pathj/to/the/project/gradle/wrapper/gradle-4.0-bin.zip

但是当我运行第一个命令时,比如gradle task它returns:

  • What went wrong: A problem occurred configuring root project '03-gradle-wrapper-local'.

    java.io.FileNotFoundException: /Users/myself/.gradle/wrapper/dists/gradle-4.0-bin/3p92xsbhik5vmig8i90n16yxc/gradle-4.0/lib/plugins/gradle-diagnostics-4.0.jar (No such file or directory)

我如何告诉 Gradle 从当前项目文件夹中获取 zip 文件,使用相对路径,而不是下载它,并使用该 zip 文件创建一个包装器以用于我的构建?

除了在本地存储 gradle 包装器是否有意义之外,这是可能的。我假设使用 gradle-4.0-rc-3-bin 发行版。

项目结构如下:

.
├── gradle
│   └── wrapper
│       ├── gradle-4.0-rc-3-bin.zip
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
└── gradlew.bat

这里是gradle-wrapper.properties的内容:

distributionBase=PROJECT
distributionPath=gradle
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=gradle-4.0-rc-3-bin.zip

由于包装文件将被下载到项目目录,因此建议将 gradle/gradle-4.0-rc-3-bin 添加到 SCM 忽略文件。

可以找到Demo here