0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

gradle和gradlew的区别?

哆啦安全 来源:哆啦安全 作者:哆啦安全 2022-12-13 09:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

使用Gradle开发者最常问的问题之一便是:gradlegradlew的区别?

这两个都是应用在特定场景的 Gradle 命令。通过本篇文章你将了解到每个命令干了什么,以及如何在两个命令中做选择。

快速摘要

如果你正在开发的项目当中已经包含gradlew脚本,安啦,可以一直使用它。没有包含的话,请使用gradle命令生成这个脚本。

想知道为什么吗,请继续阅读。

gradle 命令

如果你从 Gradle 官网(https://gradle.org/releases)下载和安装了 Gradle 的话,你便可以使用安装在 bin 路径下的 gradle 命令了。当然你记得将该 bin 路径添加到设备的 PATH 环境变量中。

此后,在终端上运行gradle的话,你会看到如下输出:

4deabc3e-7a86-11ed-8abf-dac502259ad0.png

你会注意到输出里打印了 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的示例:

4e004ff4-7a86-11ed-8abf-dac502259ad0.png

输出和运行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

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    117

    文章

    3836

    浏览量

    84765
  • 脚本
    +关注

    关注

    1

    文章

    407

    浏览量

    29051
  • gradle
    +关注

    关注

    0

    文章

    26

    浏览量

    995

原文标题:开发这么久,gradle 和 gradlew 啥区别、怎么选?

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MCU不同封装都什么区别

    目前MCU不同封装都什么区别
    发表于 12-01 06:41

    SIP协议和私有协议广播区别

    电子发烧友网站提供《SIP协议和私有协议广播区别.docx》资料免费下载
    发表于 11-06 16:31 1次下载

    光纤跳线和网线有什么区别

    光纤跳线和网线在传输介质、传输性能、应用场景、连接设备、成本与维护等多个方面存在显著区别
    的头像 发表于 09-06 17:37 1147次阅读

    TC377配置SMU FSP时,如何配置频率参数;三种模式有何区别,配置上有何区别

    TC377配置SMU FSP时,如何配置频率参数;三种模式有何区别,配置上有何区别
    发表于 08-08 07:48

    开关电源中原边反馈和负边反馈的区别

    开关电源中原边反馈和副边反馈的区别
    的头像 发表于 08-05 10:59 921次阅读

    ArkUI-X应用工程结构说明

    .properties ├── gradlew ├── gradlew.bat └── settings.gradle iOS应用工程结构 ArkUI-X iOS应用工程 ├── app.xcodeproj
    发表于 06-19 23:11

    VGA和DP的具体区别

    VGA和DP是两种常见的显示接口,它们在设计、性能和应用方面有显著区别
    的头像 发表于 05-14 16:36 2301次阅读

    BLDC电机和DD电机区别是什么

    BLDC无刷电机和DD电机都是在电机领域中常见的技术,它们在提高电机效率、降低功耗和噪音方面都有优势。但是两者还是有着很大的区别,下面就让我们来详细了解它们的区别。 纯分享帖,需要者可点击附件获取
    发表于 04-08 16:49

    GD32与STM32有什么区别

    电子发烧友网站提供《GD32与STM32有什么区别.docx》资料免费下载
    发表于 04-03 17:27 0次下载

    蓝牙5.4与蓝牙6.0的核心区别及技术特性对比

    蓝牙5.4与蓝牙6.0的核心区别及技术特性对比
    的头像 发表于 04-02 15:55 5.7w次阅读
    蓝牙5.4与蓝牙6.0的核心<b class='flag-5'>区别</b>及技术特性对比

    LED灯杆屏与常规LED显示屏的区别

    LED灯杆屏与常规LED显示屏的区别
    的头像 发表于 03-21 08:45 864次阅读
    LED灯杆屏与常规LED显示屏的<b class='flag-5'>区别</b>

    私有云和公有云有什么区别

    私有云和公有云在多个方面存在显著的区别,以下是具体的比较,主机推荐小编为您整理发布私有云和公有云有什么区别
    的头像 发表于 02-20 10:38 1497次阅读

    ads1258 IRTCR和IRTCT的区别是什么?

    请教:ads1258 IRTCR和IRTCT的区别在哪?手册里没看明白,TCR和TCRG4的区别应该是有铅和无铅。多谢
    发表于 01-10 10:23

    关系型数据库和非关系型区别

    关系型数据库和非关系型数据库在多个方面存在显著差异,主机推荐小编为您整理发布关系型数据库和非关系型区别,以下是它们的主要区别
    的头像 发表于 01-10 09:58 1436次阅读

    地埋光缆与架空光缆的区别

    地埋光缆与架空光缆在多个方面存在显著差异,以下是对两者区别的详细阐述。
    的头像 发表于 01-07 15:47 2686次阅读