Gradle Wrapper
Gradle Wrapper
当把本地一个项目放入到远程版本库的时候,如果这个项目是以gradle构建的,那么其他人从远程仓库拉取代码之后如果本地没有安装过gradle会无法编译运行,如果对gradle不熟悉,会使得无法很好的去快速构建项目代码。所以gradle可以自动生成一键运行的脚本,把这些一起上传远程仓库,使得即使没有安装gradle也可以自动去安装并且编译项目代码。
- Gradle是个构建系统,能够简化你的编译、打包、测试过程。熟悉Java的同学,可以把Gradle类比成Maven。
- Gradle Wrapper的作用是简化Gradle本身的安装、部署。不同版本的项目可能需要不同版本的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper帮你搞定这些事情。Gradle Wrapper是Gradle项目的一部分。
简单的gradle wrapper生成
【gradle wrapper生成】
我们在新建的目录下使用命令行输入gradle wrapper命令:

在新建的目录下可以看到以下文件:


【gradle wrapper文件说明】
|____gradle
| |____wrapper
| | |____gradle-wrapper.jar //具体业务逻辑
| | |____gradle-wrapper.properties //配置文件
|____gradlew //Linux 下可执行脚本
|____gradlew.bat //Windows 下可执行脚本
(1)gradlew.bat
gradlew.bat是bat 脚本,Windows 用户可以通过它执行 Gradle 任务,配合gradle文件夹使用。
而Linux使用的是gradlew,gradlew是一个shell 脚本,Unix 用户可以通过它来执行 Gradle 任务。
(2)gradle-wrapper.jar
gradle-wrapper.jar是Gradle Wrapper的主体功能包(wrapper 的代码所在)。项目打包必须要有的,不然无法去执行gradlew。
(3)gradle-wrapper.properties
gradle-wrapper.properties文件主要指定了该项目需要什么版本的Gradle,从哪里下载该版本的Gradle,下载下来放到哪里。从图示项目中可以知道我要使用gradle-3.5版本。

我们使用gradlew命令的使用,会根据这个文件来使用对应的gradle进行构建。当本地GRADLE_USER_HOME(当前用户目录,一般指~/.gradle)中的~/.gradle/wrapper/dists没有安装gradle时,将会自动从此地址distributionUrl中下载gradle,之后的执行将不会再次下载安装。
【文件如何配合使用】
当从版本库下载代码之后,如果你本机安装过gradle,当然直接直接编译运行既可。但是对没有安装gradle的用户,可以执行项目根目录下的gradlew.bat脚本(Linux是执行gradlew命令),
将会在gradle-wrapper.properties中的~/.gradle/wrapper/dists目录中首次下载并安装gradle并可以编译代码,一个指令可以下载并安装gradle来构建项目,由此可见非常方便。大概流程如下:
- 解析
gradle-wrapper.properties文件,获取项目需要的 gradle 版本下载地址。 - 判断本地用户目录下的
~/.gradle目录下是否存在该版本,不存在该版本,走第3点,存在走第4点。 - 下载
gradle-wrapper.properties指定版本,并解压到用户目录的下~/.gradle文件下。 - 利用
~/.gradle目录下对应的版本的 gradle 进行相应自动编译操作。
将Wrapper添加到Gradle项目
在命令行中运行 wrappertask 即可配置Wrapper,如下:
$gradle wrapper --gradle-version 2.8
:wrapper
BUILD SUCCESSFUL
Total time: 3.546 secs
运行完毕后,可以看到在项目的更目录中多了上面提到的一些文件和目录:

除了直接在命令行执行外,也可以在build.gradle文件中添加一个Wrapper task:
task wrapper(type: Wrapper){ // type: Wrapper中的Wrapper开头W必须大写
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的源码
然后执行这个task:
gradle -q wrapper
Gradle Wrapper的更多相关文章
- 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、Gradle Wrapper与Android Plugin for Gradle
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- Upgrade with the Gradle Wrapper, gradlew升级
springboot 2.0需要gradle 1+, 而自动构建的都是3.+,手动升级如下 Upgrade with the Gradle Wrapper If your existing Gradl ...
- gradle构建项目失败:Unzipping /home/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zip to /home/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9
Unzipping /home/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zip to ...
- 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系
首先用一段通俗易懂但是不是非常专业的话描述一下三者的概念.区别和联系. Gradle是个构建系统,能够简化你的编译.打包.测试过程.熟悉Java的同学,可以把Gradle类比成Maven. Gradl ...
- Jenkins问题记录:android构建时提示Unzipping /home/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zip to /home/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9 Except
-------------- -------------- 问题:今日job构建报出如下错误: Unzipping /home/.gradle/wrapper/dists/gradle-3.3-all ...
- Gradle: Gradle Wrapper
[Gradle 安装] 安装完毕后,记得设置一下环境变量.Environment Variables:GRADLE_HOME=D:\Program Files\Gadle\gradle-4.7Path ...
- Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK - Android
在Windows7上运行 “cordova build android” 报错,如下: C:\test\hello> cordova build android ANDROID_HOME=C:\ ...
- 多个 gradle 文件夹 \.gradle\wrapper\dists\ 设置gradle不是每次都下载
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 设置gradle不是每次都下载 \.gradle\wrapper\dists\ ==== ...
随机推荐
- PHP is_scalar() 函数
is_scalar() 函数用于检测变量是否是一个标量.高佣联盟 www.cgewang.com 标量变量是指那些包含了 integer.float.string 或 boolean 的变量,而 ar ...
- Servlet容器启动过程
参考:https://blog.csdn.net/fredaq/article/details/9366043 一.概念 所谓Servlet容器其实说白了是符合Servlet规范的Java web容器 ...
- thread-01
// 8:15 AM/09/28/2017 #pragma once #include <iostream> // std::cout #include <thread> // ...
- Springboot 在@Configuration注解的勒种 使用@Autowired或者@value注解 读取.yml属性失败
springboot中@value注解,读取yml属性失败 问题场景: 配置ShrioConfig时,想注入.yml的参数进行配置 解决办法: 如果注释掉shiroEhcacheManager 以下所 ...
- Jenkins持续集成(上)-Windows下安装Jenkins
环境:Windows 2008 R2.Jenkins2.235.1: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成SLB.配置管理.Jenkins)> ...
- 为什么我们需要Q#?
原文地址:https://blogs.msdn.microsoft.com/visualstudio/2018/11/15/why-do-we-need-q/ 本文章为机器翻译. 你可能熟悉微软量子的 ...
- C#LeetCode刷题之#819-最常见的单词(Most Common Word)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3969 访问. 给定一个段落 (paragraph) 和一个禁用单 ...
- Python多进程实现并行化随机森林
文章目录 1. 前言 2. 随机森林原理 3.实现原理 3.1并行化训练 3.1.1训练函数 3.1.2 单进程训练函数 生成数据集模块--生成部分数据集 单进程训练函数代码 3.2 并行化预测 3. ...
- Android 开发学习进程0.13 Androidstudio快捷键 xmlns
xmlns XML namespace xml命名空间 其中主要是定义xml文件定义位置 前缀有三种,android app tools 后面为唯一标识符URI android 表示为引用自安卓系统 ...
- Spring/Springboot——JavaConfig
1.认识JavaConfig JavaConfig是Spring的一个子项目,在Spring4之后成为一个核心功能 JavaConfig中使用的注解: @Configuration 在类上打上这一标签 ...