问题背景
今天使用 gradle build 命令时,提示 gradle 版本兼容性问题,build 失败了。
解决:使用 gradle wrapper 命令,可以指定 gradle 的版本。
理解 Gradle Wrapper
绝大多数使用 Gradle 的开发者都会使用 Gradle Wrapper。这是个很正确的选择,因为这使得该项目的开发人员不需要操心于 Gradle 的安装上和 gradle 版本的兼容性问题。正因为 wrapper 无处不在,因此我们需要理解它可以做什么。
一、如果你还没使用 wrapper
使用 wrapper 保证了团队中每一个开发者都使用同样版本的 Gradle,并能够使用 Gradle 进行项目的构建(即使他们的电脑上并没有安装 Gradle)。
想生成一个 gradle wraper 是十分容易的( gradle wraper 只需要生成一次,以后就可以到处运行了)。首先需要安装 Gradle,然后进入项目目录,在命令行中执行 gradle wrapper 命令(当然需要在 build.gradle 文件中定义一个 wrapper 任务),就大功告成了。你可以增加 --gradle-version X.Y 选项去指定你想使用的 Gradle 版本。
// file: build.gradle
task wrapper(type: Wrapper) {
gradleVersion = '3.5'
}
现在你可以通过 gradlew shell 脚本或 bat 文件,在你的项目根目录中运行任何的 Gradle 任务。
二、Gradle Wrapper 的文件结构组成
Gradle Wrapper 由四个文件组成,这些文件在你的项目目录中。
*1 -
gradlew : shell 脚本,Unix 用户可以通过它来执行 Gradle 任务。
*2 -
gradlew.bat : bat 脚本,Windows 用户可以通过它执行 Gradle 任务
*3 -
gradle/wrapper/gradle-wrapper.jar : wrapper 的可执行 JAR;wrapper 的代码所在。
*4 -
gradle/wrapper/gradle-wrapper.properties : 一个属性文件,用来配置 wrapper
你应该将这些文件 commit 到版本管理器中。
它们体积很小,且独立于操作系统,对于 wrapper 的使用是十分重要的。
三、Gradle Wrapper 做了什么
当你运行 Gradle Wrapper 时它做了以下几件事:
1. 解析给予 gradlew 的参数
2. 安装正确版本的 Gradle
3. 调用 Gradle 去执行指定的任务
注意 wrapper 仅接受两个可选参数:
* -q 或 --quiet 去阻止输出
* -g 或 --gradle-user-home 去指定一个和替换的 Gradle 的 home 目录。
Gradle 的安装阶段是唯一令人十分感兴趣的阶段。首先,它会检查你的 GRADLE_USER_HOME,查看在这个目录下是否有所需要的 Gradle。如果这里有,wrapper 就会去调用该 Gradle。如果没有,wrapper 会下载所需的 Gradle。
有一点需要注意,wrapper 会忽略任何安装在你系统上的 Gradle。wrapper 另外在自己的目录中下载 Gradle,并调用这些 Gradle。当 wrapper 执行任务时,它会使用所有的全局配置,如在Gradle home 目录中的 gradle.properties 文件。
哪些是 Gradle Wrapper 没有做的
Gradle Wrapper 并没有执行你的任务,它只是确认你有所需要的 Gradle 然后调用它。wrapper 是十分轻量的一层,用来消除开发人员自己管理 Gradle 的麻烦。
这意味着 wrapper 与 Gradle 本身是完全分离的。一个 2014 年的 wrapper 可以使用 Gradle 4.0 构建一个项目,一个今天才安装的 wrapper 可以使用 Gradle 2.0 构建一个项目。
如果你在构建中遇见了一个问题,wrapper 出错的可能性极小,因为它仅仅调用了 Gradle。
四、Wrapper 的配置
我在前面提到,在你的项目中,其中一个是 wrapper 的配置文件 gradle/wrapper/gradle-wrapper.properties 。
通常这个文件是这样的:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip
distributionBase + distributionPath 指定了 wrapper 保存下载的 Gradle 的路径。默认情况下 GRADLE_USER_HOME 是 ~/.gradle ,所以这个 wrapper 会保存 Gradle 在 ~/.gradle/wrapper/dists 。
zipStoreBase 和 zipStorePath 是很相似的。它们指定了 wrapper 保存下载的 Gradle 压缩包的位置。
distributionUrl 通常是你比较关心的,通过它你可以指定你需要的 Gradle 版本,和下载的地址。
五、切换 gradle 的版本
wrapper 的文档中说:
如果你想切换你所使用的 Gradle 版本,你不需要重新执行 wrapper 任务,
仅需要在 gradle-wrapper.properties 文件中更新 distributionUrl 即可。
六、wrapper 的升级
通常情况下你不需要更新 Gradle Wrapper。
但如果需要,你可以在更新 Gradle 之后通过执行 gradle wrapper 任务来进行更新。
升级 wrapper 没有什么问题,但不要期待有令人激动的新特性。
自从 2014 年以来,升级 wrapper 完全没有意义。
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2430172
引用:
https://medium.com/@bherbst/understanding-the-gradle-wrapper-a62f35662ab7
https://blog.csdn.net/zsensei/article/details/78443501
-
分享到:
相关推荐
:robot: :sparkles:目录用法创建一个新的专用工作流文件: .github/workflows/update-gradle-wrapper.yml 粘贴此配置: name : Update Gradle Wrapperon : schedule : - cron : " 0 0 * * * "jobs : update-gradle-...
gradle wrapper gradle wrapper properties 2 查看此文件的最后一行: distributionUrl http : services gradle org distributions gradle 1 11 all zip 这表明gradle 1 11 all zip包下载不下来 一直卡着 3 将...
Android studio 中 Gradle手动下载安装集成。方案一,Use default gradle wrapper(recommend)-附件资源
Flutter搭建环境的下载Gradle Wrapper的问题的一个解决方式,见博客http://blog.csdn.net/xjwangliang/article/details/78042740 重新压缩方便手动安装,直接在flutter/bin/cache下解压文件即可。
下载后 解压覆盖到UE_4.20\Engine\Build\Android\Java\gradle\gradle\wrapper 目录 gradle-4.1-all.zip本地文件
博客(Flutter搭建环境的下载Gradle Wrapper的问题的一个解决方式) http://blog.csdn.net/xjwangliang/article/details/78042740
java运行依赖jar包
通过在目录的根目录中具有Gradle Wrapper脚本( gradlew或gradlew.bat )来标识Gradle项目。 (默认情况下,未启用Nested Gradle项目发现,请将"gradle.nestedProjects": true启用。) 功能概述 扩展程序激活后,您...
代理您是否曾经需要使用Gradle Wrapper来构建一个项目,该项目指向无法通过公司防火墙访问的发行版? 通常,我们会修改wrapper.properties ,从而导致“肮脏的”构建,或者完全忽略Wrapper并使用本地安装的Gradle...
wrapper- 解决org.gradle.wrapper.GradleWrapperMain找不到或无法加载主类
1、修改,项目目录\gradle\wrapper下的,gradle-wrapper.properties文件,中的distributionUrl为https\://services.gradle.org/distributions/gradle-4.1-all.zip。 2、将该文件复制到一下位置C :\Users\你的用户名\...
Android Studio的gradle-3.3-all。 使用方法。...2、将该gradle-3.3-all.zip文件复制到一下位置C:\Users\你的用户名\.gradle\wrapper\dists\gradle-3.3-all\随机字符串\下,重新打开android studio即可。
下载解压后需要与第二部分解压的文件合并到bzyivzo6n839fup2jbap0tjew文件夹下,之后将整个bzyivzo6n839fup2jbap0tjew文件夹,放入C:\Users\用户名\.gradle\wrapper\dists\gradle-4.1-all文件夹中即可使用。