Gradle Wrapper

本文讲述Gradle Wrapper,默认您已经掌握了相关知识


[TOC]

简介

  • Wrapper是对Gradle的一层包装,便于在团队开发过程中统一Gradle构建的版本。
  • Wrapper启动Gradle时会检查Gradle有没有被下载关联,若没有就会从配置的地址下载并运行构建。

1. 生成Wrapper

Gradle提供了内置的Wrapper task帮助我们自动生成Wrapper所需的目录文件,在终端进入项目根目录输入命令gradle wrapper

1
2
3
4
5
6
gradle wrapper

Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details

BUILD SUCCESSFUL in 8s
1 actionable task: 1 executed

生成的文件如下:

1
2
3
4
5
6
|____gradle
| |____wrapper
| | |____gradle-wrapper.jar //具体业务逻辑
| | |____gradle-wrapper.properties //配置文件
|____gradlew //Linux 下可执行脚本
|____gradlew.bat //Windows 下可执行脚本

2. Wrapper配置

终端执行gradle wrapper生成相关文件时,可指定如下参数,控制wrapper的生成:

Wrapper配置参数:

参数名 说明
--gradle-version 用于指定使用的Gradle版本
--gradle-distribution-url 用于指定下载Gradle发行版的url地址

例如:

1
gradle wrapper --gradle-version 4.1

表示配置 wrapper使用4.1版本Gradle,文件gradle-wrapper.properties中的distributionUrl的规则是http\://services.gradle.org/distributions/gradle-${gradleVersion}-bin.sip。若不设置,则会默认使用当前安装的Gradle版本。

3. gradle-wrapper.properties

该配置文件是gradle wrapper的相关配置文件

gradle-wrapper.properties的配置字段:

字段名 说明
distributionBase 下载Gradle压缩包解压后存储的主目录
distributionPath 相对于distributionBase的解压后的Gradle的路径
zipStoreBase 类似distributionBase,但存放压缩包
zipStorePath 类似distributionPath,但存放压缩包
distributionUrl Gradle发行版压缩包的下载地址

内容如下:

1
2
3
4
5
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-bin.zip

4. 自定义Wrapper task

前面提到gradle-wrapper.properties是由Wrapper task生成的,所以我们可以通过配置Wrapper task来达到配置gradle-wrapper.properties的目的。

可在build.gradle构建文件中录入如下脚本:

1
2
3
4
5
6
7
8
9
task wrapper(type: Wrapper){
gradleVersion='2.8'
distributionBase='GRADLE_USER_HOME'
distributionPath='wrapper/dists'
zipStoreBase='GRADLE_USER_HOME'
zipStorePath='wrapper/dists'
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
}
//每一项都可单独设置,gradle-2.8-all.zip表示下载该版本Gradle的源码

到这Gradle Wrapper就简单介绍完了,后续我们再学习新的Gradle知识,欢迎持续关注

您的支持将鼓励我继续创作!