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,就自动安装好了。
Gradle: Gradle Wrapper的更多相关文章
- Gradle | Gradle项目无法导入依赖包
Gradle | Gradle项目无法导入依赖包 背景 今天使用idea导入一个Gradle项目,使用 gradle build构建成功,但是项目还是无法正常导入依赖包,显示错误如下: 解决方案 后来 ...
- gradle/gradle plugin/Android studio关系
gradle - 构建工具,存储于Users/stono/.gradle/wrapper/dists Adroid Studio- IDE Gradle plugin - 在AS中使用Gradle的插 ...
- build.gradle & gradle.properties
一.build.gradle buildscript { ext { springBootVersion = '1.5.9.RELEASE' } repositories { maven { cred ...
- [Gradle] Gradle 构建 android 应用常见问题解决指南
转载地址:http://www.cnblogs.com/youxilua/p/3348162.html 1: 使用最新的gradle android插件 以前我们写的时候会这么写 dependenci ...
- [Gradle] Gradle 构建工具的未来
转载地址:http://www.infoq.com/cn/news/2011/04/xxb-maven-6-gradle Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你 ...
- [Gradle] Gradle 简介
Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具. Ø gradle对多工程的构建支持很出色,工程依赖是gradle的第一公民. Ø ...
- Could not find or load main class org.gradle.wrapper.GradleWrapperMain解决办法
解决办法: gradlew is the gradle wrapper executable - batch script on windows and shell script elsewhere. ...
- Chapter 5. The Gradle Wrapper 关于gradle wrapper
Most tools require installation on your computer before you can use them. If the installation is eas ...
- gradle wrapper 简单使用
其实就是对于gradle 的一个包装,保证了项目版本的一致,同时减少配置 1. 生成wrapper // 使用gradle wrapper 命令 gradle wrapper 输出效果如下: [r ...
随机推荐
- 消息中间件RabbitMQ(一)
1.消息中间件 消息队列中间件是指利用高效可靠地消息传递机制传递消息.有两种传递模式:点对点模式.发布/订阅模式.流行的消息中间件有RabblitMQ.Kafka.RockerMQ.它们都提供了基于存 ...
- 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)
摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...
- Perl中的hash类型
hash类型 hash类型也称为字典.关联数组.映射(map)等等,其实它们都是同一种东西:键值对.每一个Key对应一个Value. hash会将key/value散列后,按序放进hash桶.散列后的 ...
- 翻译:update语句(已提交到MariaDB官方手册)
本文为mariadb官方手册:UPDATE的译文. 原文:https://mariadb.com/kb/en/update/ 我提交到MariaDB官方手册的译文:https://mariadb.co ...
- React Fiber源码分析 第三篇(异步状态)
先附上流程图~ 调用setState时, 会调用classComponentUpdater的enqueueSetState方法, 同时将新的state作为payload参数传进 enqueueSetS ...
- 【原】KMeans与深度学习自编码AutoEncoder结合提高聚类效果
这几天在做用户画像,特征是用户的消费商品的消费金额,原始数据(部分)是这样的: id goods_name goods_amount 男士手袋 1882.0 淑女装 2491.0 女士手袋 345.0 ...
- css3 简易时钟
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 95%的中国网站需要重写CSS
95%的中国网站需要重写CSS 很长一段时间,我都使用12px作为网站的主要字体大小.10px太小,眼睛很容易疲劳,14px虽容易看清,却破坏页面的美感.唯独12px在审美和视力方面都恰到好处. 谁对 ...
- HTML5 & CSS3初学者指南(4) – Canvas使用
介绍 传统的HTML主要用于文本的创建,可以通过<img>标签插入图像,动画的实现则需要第三方插件.在这方面,传统的HTML极其缺乏满足现代网页多媒体需求的能力.HTML5的到来,带来了新 ...
- 34.Odoo产品分析 (四) – 工具板块(5) – 设备及联系人目录(1)
查看Odoo产品分析系列--目录 设备管理 设备应用用于公司内部的设备管理,跟踪员工的设备及管理维护的要求. 安装"设备"模块: 1 设备 选择设备菜单,并新建一个设备,该表单 ...