Gradle 入门:Gradle Wrapper

----《Android Gradle 权威指南》学习笔记

总目录:Gradle 学习系列 -- 目录
上一篇:Gradle 入门:Hello World
下一篇:Gradle 入门:日志

1 Gradle Wrapper 简介

1.1 Wrapper,顾名思义,就是 Gradle 的一层包装,便于在团队开发过程中统一 Gradle 构建的版本。这样大家都可以用统一的 Gradle 版本进行构建工程,可以避免因为 Gradle 版本不统一而带来的问题。

1.2 一般在项目开发中,用的都是 wrapper 这种方式,而不是自己下载 gradle 的压缩包,解压后配置 gradle 环境变量的方式。 wrapper 在 Windows 下是一个批处理文件,在 Linux 下是一个 shell 脚本。当使用 wrapper 启动 gradle 的时候,wrapper 会自动检查 gradle 是否被下载关联,如果没有则会从配置的地址进行下载并运行构建。这种方式对开发人员是非常方便的,因为不用再去专门配置 gradle 环境了,只要执行 wrapper 命令即可,wrapper 它会自动搞定一切。 ---- IDE 中就是这种方式。

2 生成 Wrapper

2.1 Gradle 提供了内置的任务 wrapper task 来自动生成 wrapper 所需的目录及文件,在项目的根目录中(一般是 build.gradle 的路径下)输入命令 gradle wrapper 即可生成, 如图所示:
1.5-1.png
1.5-2.png

2.2 各个文件的作用说明如下:

(1) gradlew 和 gradlew.bat 分别 Linux 和 Windows 下的可执行脚本。用法和 Gradle 原生命令是一样的。比如同样执行 taskHello 任务,两种命令的结果是相同的:
1.5-3.png

但是有一点需要注意:
gradle taskHello 是用在系统环境变量中配置的 Gradle 版本来执行任务的,如果找不到 Gradle 则会报错
gradlew taskHello 是用在 ./gradle/wrapper/gradle-wrapper.properties 配置的 Gradle 版本来执行任务的,如果找不到对应的 Gradle 则会去配置的链接中下载,下载的默认路径是 C 盘中的 .gradle 文件夹。

(2) gradle-wrapper.jar 是具体业务逻辑实现的 jar 包 gradlew 最终还是使用 java 执行这个 jar 包来执行 Gradle 的相关操作。
(3) gradle-wrapper.properties 是配置文件,用于配置使用哪个版本的 Gradle。

2.3 生成的这些 wrapper 文件可以随着项目工程一起提交到版本控制系统里面(比如 git),这样后续开发也会按照提交的配置好的 Gradle 版本进行统一构建开发。

3 wrapper 配置

3.1 在执行命令 gradle wrapper 时可以指定一些参数来控制 wrapper 的生成。具体有如下两个配置参数:

--gradle-version  用于指定使用的 Gradle 的版本
--gradle-distribution-url 用于指定下载 Gradle 版本的URL,该值的规则是 http://services.gradle.org/distributions/gradle-${gradleVersion}-bin.zip

3.2 gradle-wrapper.properties 是 gradle 的配置文件。在执行命令 gradle wrapper 时的参数配置会写入该文件中,具体的字段说明如下:

distributionBase    下载 Gradle 压缩包解压后存储的主目录
distributionPath    相对于 distributionBase 的解压后的 Gradle 压缩包的路径 
zipStoreBase        同 distributionBase,区别是存放的是 zip 压缩包
zipStorePath        同 distributionPath,区别是存放的是 zip 压缩包
distributionUrl     Gradle 发行版本压缩包的下载地址  ---- 比较关注的是这个配置字段

3.3 如果运行 ./gradlew 的时候一直卡着不动,可能是因为官方的 Gradle 地址被封闭了,可以把 distributionUrl 换成其他的镜像地址尝试。

4 自定义配置 wrapper task 生成 gradle wrapper

4.1 我们可以对 wrapper task 进行修改,生成自定义配置的 gradle-wrapper.properties

4.2 在 build.gradle 构建脚本中配置以下代码:

task wrapper(type: Wrapper){
     gradleVersion = '7.1'
     archiveBase = 'GRADLE_USER_HOME'
     archivePath = 'wrapper/dists'
     distributionBase = 'GRADLE_USER_HOME"'
     distributionPath = 'wrapper/dists'
     distributionUrl = 'http\://services.gradle.org/distributions/gradle-7.1-all.zip'
}

这样在执行 gradle wrapper 就会生成7.1版本的 wrapper 了,而不用使用 --gradle-version 7.1 这样的命令进行指定了。

相关代码:https://gitee.com/fzq.com/gradle-demos
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容