GradleWrapper(Gradle包装器)基本使用和常见问题

前言

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
    }

你可能感兴趣的