如何在使用Gradle包装器时在本地系统中使用Gradle Zip而无需下载

106

我正在尝试使用Gradle包装器(gradlew)构建Gradle项目。

当我使用./gradlew build进行构建时,它输出如下文本:

下载http://services.gradle.org/distributions/gradle-1.11-bin.zip

我已经单独下载了gradle-1.11-bin.zip,不想在构建时重新下载。

那么,我应该把gradle-1.11-bin.zip放在我的项目或系统哪个位置,以免再次下载?

gradle/wrapper/gradle-wrapper.properties的内容如下:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-bin.zip

我曾试过将gradle-1.11-bin.zip复制到gradle/wrapper/dists中,但这并没有解决问题。

10个回答

136

根据 gradle-wrapper 文档的第 61.1. 配置 节,如果你不希望在使用 gradlew 构建项目时发生任何下载,请将 Gradle 发行版 zip 添加到版本控制中,并放置到包装器配置指定的位置。支持相对 URL - 您可以将分发文件相对于 gradle-wrapper.properties 文件的位置指定。

因此,我将 gradle/wrapper/gradle-wrapper.properties 中的 distributionUrl 属性更改为:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=gradle-1.11-bin.zip

然后,我将gradle-1.11-bin.zip的副本复制到gradle/wrapper/中。

然后,./gradlew build下载了本地副本的zip文件并构建了项目。


以下是一个真实世界的例子:

mkdir -p $HOME/dev
cd $HOME/dev
git clone https://github.com/oss-review-toolkit/ort
cd ort/gradle/wrapper
wget https://services.gradle.org/distributions/gradle-7.5.1-bin.zip
sed -i 's/distributionUrl=.*/distributionUrl=gradle-7.5.1-bin.zip/' gradle-wrapper.properties 
cd ../..
./gradlew installDist

11
这段话漏掉了包装器的一个主要作用,即自动为所有构建用户下载和安装Gradle。如果您想使用本地安装,请将其放置在PATH中,并调用“gradle”而不是“gradlew”。 - Peter Niederwieser
51
如果您需要向没有互联网接入的人发送软件,这就是一件大事。是的,这确实发生过;有些电脑没有连接到互联网。 - Chris Jones
4
这对企业使用非常重要。我们的构建服务器不允许访问互联网。所有依赖项都从 Nexus 获取,但包装器一直是问题所在,并阻止了使用 Gradle。中央安装可以解决此问题,但您需要所有可能的 Gradle 版本,因为每个构建可能会使用特定版本。然而,最好的解决方案是也从 Nexus 获取 zip,但此更改请求遭到拒绝。 - ChrLipp
有没有一种方法可以使用环境变量来定义位于Android Studio文件夹内部的gradle路径?例如,为..\android-studio\gradle\gradle-3.3-all.zip定义一个相对路径。 - ir-tech
// 不要使用Android 8,因为它会一直下载成绩分布,请使用Grade 7 ionic cordova platform add android@8.0.0 - Anand_5050
这真是救命恩人啊。我一直收到 SSL 错误,说文件无法下载。这种解决方法让我完成了构建。谢谢! - TheRealMikeD

58

修改 gradle/gradle-wrapper.properties 文件

Windows系统:

distributionUrl=file\:/d:/gradle-2.2.1-all.zip

Linux:

distributionUrl=file\:/tmp/gradle-2.2.1-all.zip

2
通常我使用Windows版本的Android Studio,但有时我会在Linux操作系统中打开我的项目。是否可以定义distributionUrl,以便Gradle ZIP包在不更改distributionUrl值的情况下在两个操作系统上都可以访问? - ir-tech
2
@ir-tech,您可以使用相对路径,例如file:///../lib/gradle-2.2.1-all.zip。 - AaA
// 不要使用Android 8,因为它会一直下载等级分布,请使用等级7 ionic cordova platform add android@8.0.0// 这将运行 ionic cordova platform add android@~7.1.1 --save然后运行以下命令,这次应该会成功(对我有效)ionic cordova build android - Anand_5050
这对我没用。不过,只是忽略 'file' 部分的话就可以了:distributionUrl=../lib/gradle-2.2.1-all.zip。该路径是相对于 /gradle/wrapper/ 文件夹。 - user136036
太好了~救了我的命。 - JohnWatsonDev

28

只需将下载的Gradle文件拖放到您的浏览器地址栏中,然后复制地址并按照以下方式更改gradle/wrapper/gradle-wrapper.properties:

distributionUrl=ADDRESS THAT COPY FROM YOUR BROWSER
例子:
distributionUrl=file:///E:/gradle/gradle-4.1-all.zip
或者您可以将gradle.zip文件复制到wrapper文件夹中,然后使用相对路径:

或者您可以将 gradle.zip 文件复制到 wrapper 文件夹中,之后使用相对路径:

distributionUrl=gradle.zip

无法工作。在ionic cordova build android中,distributionUrl会自动更正为https://services.gradle.org/distributions/gradle-4.10.3-all.zip。 - Anand_5050

9
这是我为了避免编辑当前和未来项目中的所有gradle wrapper所做的事情。
  • 在您的项目文件夹中找到gradle-wrapper.properties(例如./gradle/wrapper/gradle-wrapper.properties
  • 使用Sublime Text等文本编辑器打开文件,以查找distributionUrl行(例如distributionUrl=http\://services.gradle.org/distributions/gradle-2.10-bin.zip
需要的gradle二进制档案是gradle-2.10-bin.zip。 另一个版本是gradle-2.10-all.zip,其中包括源代码和文档。
请注意,每个项目都附带不同版本的gradle分发版,您可以更改版本为您拥有的版本(gradle-x.xx-XXX.zip),其中包括二进制文件。(例如gradle-2.11-bin.zip | gradle-2.11-all.zip)。
在Windows上执行gradlew.bat或在Linux上执行gradle以启动包装器构建项目。
它将开始下载gradle-2.10-bin.zip到您的主目录下的.gradle\wrapper\dists(例如C:\Users\Sojimaxi\.gradle\wrapper\dists\gradle-2.10-bin)。对于每个指定的gradle版本,此下载仅发生一次。
如果您已经下载了档案,则可以使用Ctrl+C终止下载。
进入gradle下载位置C:\Users\Sojimaxi\.gradle\wrapper\dists\gradle-2.10-all\78v82fsf226usgvgh7q2ptcvif,将您自己的gradle-2.10-bin.zip复制到该目录中,然后删除该目录中的gradle-2.10-all.zip.part
就这样。返回项目目录以执行gradlew.bat,它将使用您的本地副本而不是下载新副本。

请查看@wcc526的答案,它运行良好且易于实现。 - Banee Ishaque K

4
这个解决方案对我没有用,但帮助我找到了正确的方法,所以如果你想离线安装gradle,请按照以下步骤操作:
1. 在gradle目录下的项目中打开gradle-wrapper.properties文件。 2. 在最后一行可以找到gradle版本,下载该版本或从另一台电脑复制该文件。
distributionUrl=http\://services.gradle.org/distributions/gradle-3.3-bin.zip

下载链接将会是这样的:http://services.gradle.org/distributions/gradle-3.3-bin.zip 3. 打开这个位置:C:\Users\userName.gradle\wrapper\dists\gradle-3.3-all,确保只有一个文件夹(名称不同),如果有其他文件夹请全部删除并在android studio上点击gradle sync,这样会自动生成另一个带有随机名称的文件夹。
4. 打开该文件夹并确保只有截图中的最后两个文件。
5. 将下载的zip文件移动到那个文件夹中。
6. 再次在android studio上按sync gradle,假定gradle将正常工作。
参考图片链接:enter image description here

2

我发现了另一种最简单的方法,只需要启动我的XAMPP服务器,然后在htdocs文件夹内创建一个gradle文件夹。我将压缩文件gradle-4.4-all.zip添加到该文件夹中,并将分发URL更改为distributionUrl=http\://localhost/gradle/gradle-4.4-all.zip。 然后我重新启动了安卓系统,同步完成且没有出现任何问题。


1

复制你放置文件gradle-5.0-rc-5-bin.zip的路径。 例如: 路径C:/My doc/tools

如果你的路径中有空格,请用%20替换。

file:///C:/My%20doc/tools/gradle-5.0-rc-5-bin.zip

执行命令:

$ gradlew wrapper --gradle-version 5.0-rc-5

0

我下载到

C:\data\Setup\Development\Gradle 2.11\gradle-2.11-all.zip

在Eclipse中,我声明: {{link1:enter image description here}}
然后我非常快地创建了一个新的Gradle项目(带包装器),无需下载。(比这个{{link2:solution}}更容易)

是的,它很快。因为与其他答案不同,它使用系统中可用的Gradle而不是通过http或文件协议下载Gradle分发包,解压并执行它。 - Banee Ishaque K
在我的情况下,首先我使用了 @edward anderson 的方法。然后切换到 wcc526 的方法(这是 TheKojuEffect 方法的修改版),最终使用了这种方法。 - Banee Ishaque K
但是现在我有一个问题,我正在我的系统上使用gradle-4.0-rc-3。但是这个版本不适用于最新的Android Studio(我认为最新版本是3.0-alpha6,但我只有3.0-alpha5),它总是报错,说最新支持的Gradle版本是gradle-4.0-milestone-1,而你的版本是4.0-rc-3。我必须将我的系统gradle降级到4.0-milestone-1或者始终使用gradle wrapper与Android Studio项目。是否有任何解决此问题的方法? - Banee Ishaque K
仅在 IDE 中使 gradle 工作而不是在命令行中使用 gradle 是无法使用或信任构建工具的绝佳方法。您应该在验证命令行构建成功后才尝试使 IDE 工作。反过来做则是让您失去数小时和数天生命的好方法,试图弄清楚为什么事情会在您和其他人的机器上以随机和不同的方式突然中断。 - Ajax

0

// 不要使用Android 8,因为它会不断下载分级分布,请使用7级

ionic cordova platform add android@8.0.0

// 这将运行

ionic cordova platform add android@~7.1.1 --save

然后运行下面的命令,这一次应该会成功(对我来说有效)

ionic cordova build android


0

创建本地服务器以模拟https下载(可能有点复杂),但它可以工作。
1. 安装Tomcat,然后解压并执行E:\apache-tomcat-8.5.4\bin\startup.bat

2.将gradle-2.14.1-all.zip放入E:\apache-tomcat-8.5.4\webapps\ROOT\distributions

3.像这样更改URL:distributionUrl=http\://localhost:8080/distributions/gradle-2.14.1-all.zip
现在按照通常的方式运行即可。


请查看@wcc526的答案,它运行良好且易于实现。 - Banee Ishaque K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接