使用
Gradle
的开发者最常问的问题之一便是:gradle
和gradlew
的区别?。
这两个都是应用在特定场景的 Gradle 命令。通过本篇文章你将了解到每个命令干了什么,以及如何在两个命令中做选择。
快速摘要
如果你正在开发的项目当中已经包含
gradlew
脚本,安啦,可以一直使用它。没有包含的话,请使用gradle
命令生成这个脚本。想知道为什么吗,请继续阅读。
gradle 命令
如果你从 Gradle 官网(https://gradle.org/releases)下载和安装了 Gradle 的话,你便可以使用安装在 bin 路径下的 gradle 命令了。当然你记得将该 bin 路径添加到设备的 PATH 环境变量中。
此后,在终端上运行gradle
的话,你会看到如下输出:
你会注意到输出里打印了 Gradle 的版本,它对应着你运行的 gradle 命令在设备中的 Gradle 安装包版本。这听起来有点废话,但在谈论 gradlew 的时候需要明确这点,这很重要。
通过这个本地安装的 Gradle,你可以使用 gradle 命令做很多事情,包括:
-
使用
gradle init
命令创建一个新的 Gradle 项目或者使用gradle wrapper
命令创建 gradle wrapper 目录及文件 -
在一个 Gradle 项目内使用
gradle build
命令进行 Gradle 编译 -
通过
gradle tasks
命令查看当前的 Gradle 项目中支持哪些 task
上述的命令均使用你本地安装的 Gradle 程序,无论你安装的是什么版本。
如果你使用的是 Windows 设备,那么 gradle 命令等同于 gradle.bat,gradlew 命令等同于 gradlew.bat,非常简单。
gradlew 命令
gradlew
命令,也被了解为Gradle wrapper
,与 gradle 命令相比它是略有不同的。它是一个打包在项目内的脚本,并且它参与版本控制,所以当年复制了某项目将自动获得这个gradlew脚本。
“可那又如何?”
好吧,如果你这么想。让我告诉你,它有很多重要的优势。
1. 无需本地安装 gradle
gradlew脚本不依赖本地的 Gradle 安装。在设备上第一次运行的时候会从网络获取 Gradle 的安装包并缓存下来。这使得任何人、在任何设备上,只要拷贝了这个项目就可以非常简单地开始编译。
2. 配置固定的 gradle 版本
这个gradlew脚本和指定的 Gradle 版本进行绑定。这非常有用,因为这意味着项目的管理者可以强制要求该项目编译时应当使用的 Gradle 版本。
Gradle 特性并不总是互相兼容各版本的,所以使用 Gradle wrapper 可以确保项目每次编译都能获得一致性的结果。
当然这需要编译项目的人使用gradlew命令,如下是在项目内运行./gradlew
的示例:
输出和运行gradle
命令的结果比较相似。但仔细查看你会发现版本不一样,不是上面的6.8.2
而是6.6.1
。
这个差异说重要也重要,说不重要也不重要。
但当使用gradlew的话可以免于担心由于 Gradle 版本导致的不一致性,缘自它可以保证所有的团队成员以及 CI 服务端都会使用相同的 Gradle 版本来构建这个项目。
另外,几乎所有使用gradle
命令可以做的事情,你也可以使用gradlew
来完成。比如编译一个项目就是./gradlew build
。
如果你愿意的话,可以拷贝示例项目并来试一下gradlew
。
https://github.com/tkgregory/spring-boot-api-example.git
gradle 和 gradlew 对比
至此你应该能看到在项目内使用gradlew
通常是最佳选择。确保gradlew脚本受到版本控制,这样的话你以及其他开发者都可以收获如上章节提到的好处。
但是,难道没有任何情况需要使用gradle
命令了吗?当然有。如果你期望在一个空目录下搭建一个新的 Gradle 项目,你可以使用gradle init
来完成。这个命令同样会生成gradlew脚本。
(如下的表格简单列出两者如何选)可以说,使用gradlew确实是 Gradle 项目的最佳实践。
你想做什么? | gradle还是gradlew? |
---|---|
编译项目 | gradlew |
测试项目 | gradlew |
项目内执行其他 Gradle task | gradlew |
初始化一个 Gradle 项目或者生成 Gradle wrapper | gradle |
审核编辑 :李倩
-
程序
+关注
关注
116文章
3773浏览量
80835 -
脚本
+关注
关注
1文章
387浏览量
14829 -
gradle
+关注
关注
0文章
26浏览量
699
原文标题:开发这么久,gradle 和 gradlew 啥区别、怎么选?
文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论