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

前言

Gradle WrapperGradle包装器)是Gradle的一个特性,能够经过包装器指定项目构建时使用的Gradle版本。app

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

介绍

Gradle Wrapper结构

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

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

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

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

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

配置文件详解

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哦)了code

修改Gradle Wrapper配置

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

  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来处理it

常见问题

  1. 若是Gradle Wrapper相关文件缺失怎么办?

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

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

    能够在build.gradle文件如下配置便可:

    wrapper {
        distributionUrl = https://services.gradle.org/distributions/gradle-4.9-all.zip
        distributionType = Wrapper.DistributionType.ALL
    }
相关文章
相关标签/搜索