首页 > 其他分享 >【转】Gradle Wrapper 详解

【转】Gradle Wrapper 详解

时间:2023-05-16 13:45:31浏览次数:29  
标签:zipStoreBase distributionBase wrapper gradle 详解 Wrapper Gradle

什么是 Gradle Wrapper

关于“什么是 Gradle Wrapper?”这个问题在官网是这么定义的:

The recommended way to execute any Gradle build is with the help of the Gradle Wrapper (in short just “Wrapper”). The Wrapper is a script that invokes a declared version of Gradle, downloading it beforehand if necessary. As a result, developers can get up and running with a Gradle project quickly without having to follow manual installation processes saving your company time and money.

大致意思就是:官方建议任何 Gradle 构建方法在 Gradle Wrapper 帮助下运行。Gradle Wrapper 它是一个脚本,调用了已经声明的 Gradle 版本,并且我们编译时需要事先下载它。所以,开发者能够快速的启动并且运行 Gradle 项目,不用再手动安装,从而节省了时间成本。

我们可以称 Gradle Wrapper 为 Gradle 包装器,是将 Gradle 再次包装。让所有的 Gradle 构建方法在 Gradle 包装器的帮助下运行。

为什么需要 Gradle Wrapper

我们日常开发中肯定都是一个团队在开发,如果没有 Gradle Wrapper 的话,那么团队中每来一个新同事,就需要在电脑中安装 Gradle 环境。但是有时候我们不同项目 Gradle 的版本又是不一样的,这就为我们的开发工作带来了不便。

于是乎 Gradle 就提供了 Gradle Wrapper,可以让我们的电脑中不安装 Gradle 环境也可以运行 Gradle 项目。这就是上面官方介绍中所说的 Gradle 是一个脚本,调用事先声明的 Gradle 版本,编译前去下载它,这样我们的电脑中就不用再去手动安装 Gradle 环境了,从而间接的提高了我们的开发效率。

如何构建 Gradle Wrapper

要想构建 Gradle Wrapper 就必须本地先配置了 Gradle 环境变量,Gradle 的命令中已经内置了 wrapper 命令,其实就是执行 warpper 任务。该任务就是生成我们前面说的 gradle 文件夹及它的子目录 wrapper 文件夹。在根目录下我们先删掉 gradle 文件夹,然后在项目根目录执行 gradle wrapper 命令。

我们会看到会重新生成 Gradle 文件夹如下:

image-20230516133007798

这两个文件的含义如下:

  • gradle-wrapper.jar: 既然是 jar 包,那么它肯定是包含了 Gradle 运行时的逻辑代码
  • gradle-wrapper.properties: 这个文件主要负责配置 Gradle wrapper 运行时的属性文件,声明具体使用哪个版本的 Gradle

配置 Gradle Wrapper

我们上面说gradle-wrapper.properties文件指明了 Gradle 的版本号,和 Gradle 运行时的行为属性文件。下面我们具体看下这个文件的内容:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

关于每个字段的意思如下:

  • distributionBase: Gradle 解包后存储的父目录
  • distributionPath: distributionBase指定目录的子目录(distributionBase+distributionPath就是 Gradle 解包后的存放的具体目录)
  • distributionUrl: Gradle 指定版本的压缩包下载地址
  • zipStoreBase: Gradle 压缩包下载后存储父目录
  • zipStorePath: zipStoreBase 指定目录的子目录(zipStoreBase+zipStorePath就是 Gradle 压缩包的存放位置)

升级Gradle Wrapper

升级 Gradle Wrapper 有 2 种方式:

  • 直接修改 distributionUrl 字段,然后执行 Gradle 命令或是点击同步按钮同步

    distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip
    
  • 执行 gradlew 命令

    gradlew wrapper --gradle-version 6.0.1
    

标签:zipStoreBase,distributionBase,wrapper,gradle,详解,Wrapper,Gradle
From: https://www.cnblogs.com/binbingg/p/17405373.html

相关文章

  • Android AVD创建及设置中各参数详解
    设置AVD时有些参数比较模糊,特地找了篇文章,大家参考下!本文根据如下的模拟器安装做一些解释:[color=red][b]Name[/b][/color]:自定义虚拟的名称,不能有空格或者其他非法字符,否则不能创建,即CreatAVD不能高亮点击。[color=red][b]Target[/b][/color]:选择要运行的android版本(也可理解......
  • 环状替换法详解
    环状替换法详解给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。链接:https://leetcode.cn/problems/rotate-array示例:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,......
  • Vue跨域详解
    碰到这种问题,其实你的接口已经通了,但是在页面上就是访问不通过。你可以把API请求地址单独拎出来新开个网站打开看请求是否成功,成功,但是你的项目不通。有那么几个可能吧:1、请求头设置错误headers={ 'Content-Type':'application/json'//错误的'......
  • Android AlertDialog 详解
    创建对话框一个对话框一般是一个出现在当前Activity之上的一个小窗口.处于下面的Activity失去焦点,对话框接受所有的用户交互.对话框一般用于提示信息和与当前应用程序直接相关的小功能.AndroidAPI支持下列类型的对话框对象:警告对话框AlertDialog: 一个可以有......
  • Unable to find Gradle tasks to build: [:]. Build mode: ASSEMBLE. Tests: None
    从Github上下载了一个项目,运行时报如下错误:UnabletofindGradletaskstobuild:[:].Buildmode:ASSEMBLE.Tests:None解决办法1、修改Gradle版本;2、项目中缺失setting.gradle文件,从其他项目中复制一份过来。   ......
  • MATLAB快速傅里叶变换(fft)函数详解
    MATLAB快速傅里叶变换(fft)函数详解调用:​​1.Y=fft(y);Y=fft(y,N);式中,y是序列,Y是序列的快速傅里叶变换。y可以是一向量或矩阵,若y为向量,则Y是y的FFT,并且与y具有相同的长度。若y为一矩阵,则Y是对矩阵的每一列向量进行FFT。说明:函数fft返回值的数据结构具有对称性根据采样定......
  • Docker详解
    什么是docker?Docker是一个应用打包、分发、部署的工具你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。打包:就是把你软件运行所需的依赖,第三方库,软件打包打包在一起......
  • Explain执行计划key_len详解
    我们在使用Explain查看SQL执行计划时,其中有一列为key_kenEXPLAINselect*FROMuserWHEREid=1;key_len表示使用的索引长度,key_len可以衡量索引的好坏,key_len越小索引效果越好,那么key_len的长度是如何计算的?常见的列类型长度计算:CREATETABLE`user`(`id`bigint......
  • MYSQL数据库之事务隔离级别详解
    本系列为:MySQL数据库详解,为千锋资深教学老师独家创作致力于为大家讲解清晰MySQL数据库相关知识点,含有丰富的代码案例及讲解。如果感觉对大家有帮助的话,可以【关注】持续追更~文末有本文重点总结,技术类问题,也欢迎大家和我们沟通交流!前言从今天开始本系列内容就带各位小伙伴学习......
  • Shell中的if语法详解
    if语法if[condition1];thencommand1elif[condition2];thencommand2elsecommand3fiif判断条件文件/目录判断常用判断[-aFILE]如果FILE存在则为真。[-dFILE]如果FILE存在且是一个目录则返回为真。[-eFILE]如果指定的文件或目录存......