【Gradle:新一代构建工具】学习笔记
【【尚硅谷】Gradle教程入门到进阶(从gradle安装到项目实战)】
1 Gradle入门
1.9 Gradle中的Wrapper包装器
Gradle Wrapper 实际上就是对 Gradle 的一层包装,之前我们在项目结构里面已经看到过了
用于解决实际开发中可能会遇到的不同的项目需要不同版本的 Gradle 问题。
例如:把自己的代码共享给其他人使用,可能出现如下情况:
- 对方电脑没有安装 gradle
- 对方电脑安装过 gradle,但是版本太旧了
这时候,我们就可以考虑使用 Gradle Wrapper 了。这也是官方建议使用 Gradle Wrapper 的原因。
实际上有了 Gradle Wrapper 之后,我们本地是可以不配置 Gradle 的,下载 Gradle 项目后,使用 gradle 项目自带的 wrapper 操作也是可以的。【嗦嘎!】
【那如何使用 Gradle Wrapper 呢?】
项目中的gradlew、gradlew.cmd脚本用的就是wrapper中规定的gradle版本。
就是我们之前说的
参见源码 ,打开看看
而我们上面提到的gradle指令用的是本地gradle,所以gradle指令和gradlew指令所使用的gradle版本有可能是不一样的。
可以看看
没毛病。
也可以直接看配置文件
和用命令看是一样的
gradlew、gradlew.cmd的使用方式与gradle使用方式完全一致,只不过把gradle指令换成了gradlew指令。
当然,我们也可在终端执行 gradlew 指令时,指定指定一些参数,来控制 Wrapper 的生成,比如依赖的版本等,如下:
具体操作如下所示 :
【当前gradle01 这个项目的gradle 版本是7.6.1 → 我们将其升级成7.6.2 】
-
gradle wrapper --gradle-version=7.6.2
:升级wrapper版本号,只是修改gradle.properties中wrapper版本,未实际下载看看现在的配置文件
确实已经改了,但也只是这个文件改了,实际上并没有进行真的下载
-
gradle wrapper --gradle-version 5.2.1 --distribution-type all:关联源码用
GradleWrapper 的执行流程:
-
当我们第一次执行 ./gradlew build 命令的时候,gradlew 会读取 gradle-wrapper.properties 文件的配置信息
-
准确的将指定版本的 gradle 下载并解压到指定的位置(GRADLE_USER_HOME目录下的wrapper/dists目录中)
当然
gradlew classes
也是可以的,试试擦,这个版本是不是不存在,笑哭
重新搞个存在的版本
好吧,7.6.1 是7.x 系列最新的版本了【这也间接说明,截至2023年4月8日,spring 脚手架官方创建Gradle 项目时,使用的还不是 8系列】,我直接升级成8.0.1,
没问题,接着就是编译的过程了
看看下载下来的东西
没毛病。这说明
这两个东西是结合使用的
-
并构建本地缓存(GRADLE_USER_HOME目录下的caches目录中),下次再使用相同版本的gradle就不用下载了
-
之后执行的 ./gradlew 所有命令都是使用指定的 gradle 版本。
没毛病
执行流程如下图所示:
- 下载
- 保存并解压
- 使用
gradle-wrapper.properties
文件解读:
注意:前面提到的 GRALE_USER_HOME 环境变量用于这里的 Gradle Wrapper 下载的特定版本的 gradle 存储目录。如 果我们没有配置过 GRALE_USER_HOME 环境变量,默认在当前用户家目录
下的.gradle 文件夹中
【那什么时候选择使用 gradle wrapper、什么时候选择使用本地 gradle?】
下载别人的项目或者使用操作以前自己写的不同版本的gradle项目时:用Gradle wrapper,也即:gradlew
什么时候使用本地gradle? → 新建一个项目时: 使用gradle指令即可。
【当然我们也都可以使用gradlew】