Gradle: Gradle Wrapper
【Gradle 安装】
安装完毕后,记得设置一下环境变量。
Environment Variables:
GRADLE_HOME=D:\Program Files\Gadle\gradle-4.7
Path=%GRADLE_HOME%\bin
【Gradle Wrapper】
gradlew的本质是 gradle 命令的一个wrapper,也就是在gradle的基础上添加了一些额外功能具体来说就是自动下载。
wrapper执行流程:
1)根据gradle-wrapper.properties 的配置检查是否需要安装gradle
2)如果本地的gradle经过checksum验证通过,则不需要下载gradle,否则下载并安装gradle到某个目录
3)安装完毕,开始执行 tasks
gradle-wrapper.properties配置说明:
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
默认配置如上,意思是说,从distributionUrl 下载gradle-4.7-bin.zip存放到 zipStoreBase + zipStorePath 目录下,然后安装到 distributionBase + distributionPath 目录下。
distributionBase, zipStoreBase 都可以取两个值:GRADLE_USER_HOME 或者 PROJECT
如果取值为PROJECT,则计算路径是 基于project目录来计算。
如果取值为GRADLE_USER_HOME,则计算路径是基于 用户的 home目录来计算的。
也就是说对于windows操作系统,默认基于 c:\users\<user_home>\.gradle
对于linux 系统,默认基于 $USER_HOME\.gradle 来计算
查看了gradle-wrapper.jar的源码,可以知道,当设置为GRADLE_USER_HOME时,会有一个搜索
Gradle home的过程:
1) -g 参数
2)java系统属性: -Dgradle.user.home
3) 环境变量:GRADLE_USER_HOME
4)用户 home 目录 (默认值)
private static File gradleUserHome(final ParsedCommandLine options) { if (options.hasOption("g")) { return new File(options.option("g").getValue()); } return GradleUserHomeLookup.gradleUserHome(); } public class GradleUserHomeLookup { public static final String DEFAULT_GRADLE_USER_HOME; public static final String GRADLE_USER_HOME_PROPERTY_KEY = "gradle.user.home"; public static final String GRADLE_USER_HOME_ENV_KEY = "GRADLE_USER_HOME"; public static File gradleUserHome() { String gradleUserHome; if ((gradleUserHome = System.getProperty("gradle.user.home")) != null) { return new File(gradleUserHome); } if ((gradleUserHome = System.getenv("GRADLE_USER_HOME")) != null) { return new File(gradleUserHome); } return new File(GradleUserHomeLookup.DEFAULT_GRADLE_USER_HOME); } static { DEFAULT_GRADLE_USER_HOME = System.getProperty("user.home") + "/.gradle"; } }
如果想要使用你已经安装的gradle,怎么办呢?
这个在使用gradle-wrapper时是行不通的,除非你不使用gradle-wrapper来构建
如何使用已经离线的下载的zip安装包呢?
修改gradle-wrapper.properties中配置项为本地URL即可。
例如我之前通过在线方式安装了gradle-4.7-bin.zip,
我拿到该zip文件,copy一份放到D盘,修改名称为:gradle-4.7-bin-test.zip,
然后修改gradle-wrapper.properties中配置项为:distributionUrl=file\:///d:/gradle-4.7-bin-test.zip
然后使用gradlew 执行一个task,就自动安装好了。