GradleWrapperGradle包装器基本使用和常见问题

50次阅读

共计 1811 个字符,预计需要花费 5 分钟才能阅读完成。

前言

Gradle WrapperGradle包装器)是 Gradle 的一个特性,可以通过包装器指定项目构建时使用的 Gradle 版本。

这一特性可以确保同一个项目组的人员构建环境是一致的(maven无此特性)

介绍

Gradle Wrapper 结构

一般 Gradle 项目初始化(执行 gradle init)后都会带有Gradle Wrapper。其关键结构在项目的根目录下,如下所示(省略与Gradle Wrapper 无关的文件):

├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar  
│       └── gradle-wrapper.properties
├── gradlew  
├── gradlew.bat  

gradle/wrapper 目录下就是 Gradle Wrapper 了。其中

  • gradle-wrapper.jar就是下载项目构建使用的 Gradle 的下载器
  • gradle-wrapper.properties就是就是 Gradle Wrapper 的配置文件了

gradlewgradlew.bat则分别是 UNIXWindows环境下调用包装器的脚本

配置文件详解

gradle-wrapper.properties内部只有 4 个配置项,如下所示

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
  • distributionBase指的是发布(可以类比 mavenpackage)的根目录,其中 GRADLE_USER_HOME 是系统变量或者环境变量
  • distributionPath指的是发布的相对地址(相对distributionBase
  • distributionUrl指的是下载 Gradle 的地址
  • zipStoreBase指的是压缩 zip 包的根目录
  • zipStorePath指的是压缩 zip 包的相对地址(相对zipStorePath

使用

使用 Gradle Wrapper 下载 Gradle

在项目根目录下直接运行 gradlew build 或者 gradlew.bat build(根据操作系统自行选择)就会自动下载项目需要使用的Gradle(本地还是需要安装Gradle 哦)了

修改 Gradle Wrapper 配置

可能会有人吐槽,只要改好配置文件之后执行 gradlew build 或者 gradlew.bat build。但是Gradle 本身也提供了指令进行配置的更新和自动让新配置生效,下面的演示是基于 UNIX 系统,Winodos系统请自行切换到gradlew.bat

  1. 更新 Gradle Wrapper 使用的 Gradle 版本(可升级别也可降级):gradlew wrapper --gradle-version 4.9
  2. 更新 GradleGradle Wrapper使用的 Gradle 类型(分为 allbin,默认是 binbin 是执行包,all则是完整包):gradlew wrapper --distribution-type all
  3. 更新下载 Gradle 的地址(除非是需要使用私库,不然不太建议使用):gradlew wrapper --gradle-distribution-url https\://services.gradle.org/distributions/gradle-4.9-bin.zip

上面的指令中的 gradlew 也可以使用 gradle 代替,表示使用本机安装的 Gradle 来处理

常见问题

  1. 如果 Gradle Wrapper 相关文件缺失怎么办?

    在项目的根目录下执行 gradle wrapper 就会自动创建相关文件。

  2. 除了通过配置 gradle-wrapper.properties 还有什么办法指定项目的 Gradle 版本?

    可以在 build.gradle 文件以下配置即可:

    wrapper {
        distributionUrl = https://services.gradle.org/distributions/gradle-4.9-all.zip
        distributionType = Wrapper.DistributionType.ALL
    }

正文完
 0