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使用的是gradlewgradlew是一个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来构建项目,由此可见非常方便。大概流程如下:

  1. 解析gradle-wrapper.properties文件,获取项目需要的 gradle 版本下载地址。
  2. 判断本地用户目录下的~/.gradle目录下是否存在该版本,不存在该版本,走第3点,存在走第4点。
  3. 下载gradle-wrapper.properties指定版本,并解压到用户目录的下 ~/.gradle文件下。
  4. 利用 ~/.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的更多相关文章

  1. 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. ...

  2. Chapter 5. The Gradle Wrapper 关于gradle wrapper

    Most tools require installation on your computer before you can use them. If the installation is eas ...

  3. Gradle、Gradle Wrapper与Android Plugin for Gradle

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  4. Upgrade with the Gradle Wrapper, gradlew升级

    springboot 2.0需要gradle 1+, 而自动构建的都是3.+,手动升级如下 Upgrade with the Gradle Wrapper If your existing Gradl ...

  5. 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 ...

  6. 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系

    首先用一段通俗易懂但是不是非常专业的话描述一下三者的概念.区别和联系. Gradle是个构建系统,能够简化你的编译.打包.测试过程.熟悉Java的同学,可以把Gradle类比成Maven. Gradl ...

  7. 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 ...

  8. Gradle: Gradle Wrapper

    [Gradle 安装] 安装完毕后,记得设置一下环境变量.Environment Variables:GRADLE_HOME=D:\Program Files\Gadle\gradle-4.7Path ...

  9. 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:\ ...

  10. 多个 gradle 文件夹 \.gradle\wrapper\dists\ 设置gradle不是每次都下载

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 设置gradle不是每次都下载 \.gradle\wrapper\dists\ ==== ...

随机推荐

  1. Python 字典(Dictionary) len()方法

    Python 字典(Dictionary) len()方法 描述 Python 字典(Dictionary) len() 函数计算字典元素个数,即键的总数.高佣联盟 www.cgewang.com 语 ...

  2. PHP is_executable() 函数

    定义和用法 is_executable() 函数检查指定的文件是否可执行. 如果文件可执行,该函数返回 TRUE. 语法 is_executable(file) 参数 描述 file 必需.规定要检查 ...

  3. springboot集成mongo

    大家可以关注我的微信公众号“秦川以北” 后续更多精彩实用内容分享 ​在项目中配置,mongoDB数据库,spring整合 1. 引入pom依赖 <dependency> <group ...

  4. 如何优雅的设计 Spring Boot API 接口版本号

    原文:https://blog.mariojd.cn/how-to-design-spring-boot-api-version-number-elegantly.html 一般来说,系统上线以后,需 ...

  5. Linux 下使用 killall 命令终止进程的 8 大用法

    Linux 的命令行提供很多命令来杀死进程.比如,你可以向 kill 命传递一个PID来杀死进程:pkill 命令使用一个正则表达式作为输入,所以和该模式匹配的进程都被杀死. 但是还有一个命令叫 ki ...

  6. 【HNOI2011】数学作业 题解(递推+矩阵快速幂)

    题目链接 题目大意:求$1-n$所拼接起来的数$mod\ m$的值. ----------------------------------- 递推式子很好想:$f_i=f_{i-1}*10^{\lg ...

  7. 查看 Linux 系统服务的 5 大方法

    Linux 系统服务有时也称为守护程序,是在Linux启动时自动加载并在Linux退出时自动停止的系统任务. 在本文中,良许将为大家介绍如何列出 Linux 系统里所有运行的服务,以及如何检查某个服务 ...

  8. 微信公众号怎么发PDF文件?

    微信公众号怎么发PDF文件?   我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件. 以下是公众 ...

  9. VMWare虚拟机问题总结

    windows7提示:在该系统上全局禁用了虚拟打印功能,不会为该虚拟机启用此功能,虚拟设备:'seria10'将断开连接. 解决:打开虚拟机前选择    编辑-->首选项-->设备--&g ...

  10. 最适合做C/C++开发的IDE

    一.Windows Windows没什么好说的了,铁定vs(下载链接:https://visualstudio.microsoft.com/zh-hans/), 因为如果不用vs,做Qt时会有奇妙的错 ...