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\ ==== ...
随机推荐
- C/C++编程笔记:C语言开发经典游戏项目《五子棋》,内含源码
上一节给大家分享了扫雷游戏的源代码,本篇文章当然也不会让大家失望,专门针对C语言入门或者学习了部分知识之后的小伙伴来练手的游戏项目——<五子棋大战>,本期并不是使用的easyX,因为考虑到 ...
- IDEA查看项目日志Version Control、log
打开IDEA找到以下两处: 右下角git 黄色指针指向当前项目的版本 选中初始化项目,点击右键选择"Checkout Revision 1db2f3d5",如下图 ...
- 转)Understanding Java Memory Management
Understanding Java Memory Management - IBM Java Native Interface (JNI) Objects and Code Java Native ...
- 实验08——java百文百鸡
package cn.tedu.demo; /** * @author 赵瑞鑫 E-mail:1922250303@qq.com * @version 1.0 * @创建时间:2020年7月17日 下 ...
- [vue] computed 和 method
计算属性 计算属性只有在它的相关依赖发生改变时才会重新取值 Method method每次渲染的时候都会被执行 举一个栗子 <template>...<div> <p& ...
- 职场老鸟,一文教你如何正确入门Python爬虫!
爬虫现在的火热程度我就不说了,先说一下这门技术能干什么事儿,主要为以下三方面: 1.爬取数据,进行市场调研和商业分析 爬取知乎.豆瓣等网站的优质话题内容:抓取房产网站买卖信息,分析房价变化趋势.做不同 ...
- 大型企业都在用的Python反爬虫手段,破了它!
SVG 映射反爬虫 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人 ...
- C语言学习笔记之输出缓冲
在c语言中经常用到输出函数printf,当我们像往常一样在输出函数中输入我们的想要的输出的东西后加\n换行 验证结果如我们输出的一样 如果我们在后面加入死循环会不会出现这些语句呢 结果卡死了,可还是输 ...
- Eclipse变得很卡
半个月前,发现Eclipse很卡很卡,尤其在按住Ctrl选择方法的实现类的时候,电脑的反应速度让开发者无法忍受. Eclipse还经常未响应状态. 开始以为Eclipse的运行内存设置小了,把ecli ...
- windows安装msys2 mingw64
msys2包含mingw32和mingw64 步骤1 首选安装msys64 链接:https://pan.baidu.com/s/1l9Zfm4TE1Gg3c7tkaH6KeQ 安装到指定目录 步骤2 ...