Gradle Wrapper 工作流程、生成、更新

Gradle Wrapper 的工作流程

Gradle Wrapper 的工作流程主要包括以下几个步骤:

  1. 读取配置信息:Gradle Wrapper 会读取项目根目录下的 gradle-wrapper.properties 文件,以获取 Gradle 版本和其他配置信息。
    distributionBase=GRADLE_USER_HOME 
    distributionPath=wrapper/dists 
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip 
    zipStoreBase=GRADLE_USER_HOME 
    zipStorePath=wrapper/dists
  2. 执行 Gradle 构建命令:当执行 gradlew 或 gradlew.bat 命令时,Gradle Wrapper 会被触发。当你第一次运行 ./gradlewgradlew.bat 时,Wrapper 脚本会检查指定的 Gradle 版本是否已经存在于本地。如果不存在,它会根据 gradle-wrapper.properties 中的 distributionUrl 下载对应版本的 Gradle 发行版压缩包到 GRADLE_USER_HOME 指定的路径(默认是用户的 Gradle 缓存目录)。
  3. 解压和配置:下载的 Gradle 分发包会被解压到用户的 Gradle 用户主目录下的 wrapper/dists 目录中,并配置为可用状态。
  4. 构建项目:使用下载和解压的 Gradle 版本执行构建任务。
  5. 缓存管理:Gradle Wrapper 会将下载的 Gradle 分发包存储在本地缓存中,以便后续构建可以重用已下载的版本,而无需重新下载。
  6. 更新 Gradle Wrapper:如果需要更新 Gradle 版本,可以通过运行 gradlew wrapper 命令并指定新的版本号来更新 gradle-wrapper.properties 文件中的配置,并重新下载所需版本的 Gradle。

        这个工作流程确保了项目构建的一致性,无论开发者的本地环境中是否已经安装了 Gradle,或者安装的是哪个版本的 Gradle。通过这种方式,Gradle Wrapper 简化了项目的构建过程,并减少了因环境差异导致的构建问题。

流程图如下图所示:

整个流程简要概括主要分为下面 3 步:

  1. 首先当我们刚创建的时候,如果指定的版本没有被下载,就先会去 Gradle 的服务器中下载对应版本的压缩包;
  2. 下载完成后需要先进行解压缩并且执行批处理文件;
  3. 后续项目每次构建都会重用这个解压过的 Gradle 版本。

Gradle Wrapper 生成

        想要生成 Gradle Wrapper 的话,需要本地配置好 Gradle 环境变量。Gradle 中已经内置了内置了 Wrapper Task,在项目根目录执行执行gradle wrapper命令即可帮助我们生成 Gradle Wrapper。

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

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

        执行gradle wrapper命令之后,Gradle Wrapper 就生成完成了,项目根目录中生成如下文件:

每个文件的含义如下:

  • gradle-wrapper.jar:包含了 Gradle 运行时的逻辑代码。
  • gradle-wrapper.properties:定义了 Gradle 的版本号和 Gradle 运行时的行为属性。
  • gradlew:Linux 平台下,用于执行 Gralde 命令的包装器脚本。
  • gradlew.bat:Windows 平台下,用于执行 Gralde 命令的包装器脚本。

gradle-wrapper.properties 文件的内容如下:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
  • distributionBase:Gradle 解包后存储的父目录。
  • distributionPathdistributionBase指定目录的子目录。distributionBase+distributionPath就是 Gradle 解包后的存放的具体目录。
  • distributionUrl:Gradle 指定版本的压缩包下载地址。
  • zipStoreBase:Gradle 压缩包下载后存储父目录。
  • zipStorePathzipStoreBase指定目录的子目录。zipStoreBase+zipStorePath就是 Gradle 压缩包的存放位置。

Gradle Wrapper 更新

更新 Gradle Wrapper 有 2 种方式:

  1. 接修改distributionUrl字段,然后执行 Gradle 命令。
  2. 执行 gradlew 命令gradlew wrapper –-gradle-version [version]

下面的命令会将 Gradle 版本升级为 7.2。

gradlew wrapper --gradle-version 7.2

gradle-wrapper.properties 文件中的 distributionUrl 属性也发生了改变。

distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip

Gradle Wrapper 自定义

        Gradle 已经内置了 Wrapper Task,因此构建 Gradle Wrapper 会生成 Gradle Wrapper 的属性文件,这个属性文件可以通过自定义 Wrapper Task 来设置。比如想要修改要下载的 Gralde 版本为 7.2,可以这么设置:

task wrapper(type: Wrapper) {
    gradleVersion = '7.6'
}

也可以设置 Gradle 发行版压缩包的下载地址和 Gradle 解包后的本地存储路径等配置。

task wrapper(type: Wrapper) {
    gradleVersion = '7.2'
    distributionUrl = '../../gradle-7.2-bin.zip'
    distributionPath=wrapper/dists
}

distributionUrl 属性可以设置为本地的项目目录,你也可以设置为网络地址。

更多消息资讯,请访问昂焱数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值