使用 gradlew 和 gradle 的区别

Posted

技术标签:

【中文标题】使用 gradlew 和 gradle 的区别【英文标题】:Difference between using gradlew and gradle 【发布时间】:2017-01-30 08:01:26 【问题描述】:

使用gradlewgradle 有什么区别或者它们是一样的吗?

【问题讨论】:

【参考方案1】:

不同之处在于./gradlew 表明您正在使用gradle 包装器。包装器通常是项目的一部分,它有助于安装 gradle。如果您在没有包装器的情况下使用 gradle,则必须手动安装它 - 例如,在 mac brew install gradle 上,然后使用 gradle 命令调用 gradle。在这两种情况下,您都在使用 gradle,但前者更方便并确保不同机器之间的版本一致性。

每个 Wrapper 都与特定版本的 Gradle 相关联,因此当您 首先为给定的 Gradle 版本运行上述命令之一,它 将下载相应的 Gradle 发行版并使用它 执行构建。

这不仅意味着您不必手动安装 Gradle 你自己,但你也一定要使用 Gradle 的版本 build 是专为。这使您的历史构建更可靠

在此处阅读更多信息 - https://docs.gradle.org/current/userguide/gradle_wrapper.html

此外,Udacity 有一个简洁的高级视频解释 gradle 包装器的概念 - https://www.youtube.com/watch?v=1aA949H-shk

【讨论】:

也许我读错了,但对我来说听起来像是一个危险信号。听起来 Gradle 不向后兼容,或者它发展得非常快(而且不稳定)。无法访问 Internet 的 CI 服务器会发生什么情况? @TheImpaler 我猜你必须安装所有需要的 Gradle 版本,就像 Wrapper 可以访问 Internet 时那样。 所以一个简单的结论可能是:总是更喜欢./gradlew build 而不是gradle build 对吧? @OrenIshShalom 正确,您甚至不必将构建部分指定为 cleanbuild 是默认任务,当您执行 ./gradlew【参考方案2】:

gradle 与 gradlew

gradlew 是一个使用gradle 的包装器(w - 字符)。

在后台gradlew 执行三个主要操作:

下载并安装正确的gradle版本 解析参数 调用gradle 任务

使用 Gradle Wrapper,我们可以将项目分发/共享给所有人,以使用相同的版本和 Gradle 的功能(编译、构建、安装...),即使它尚未安装。

创建包装器运行:

gradle wrapper

这个命令生成:

gradle-wrapper.properties 将包含有关 Gradle 分发的信息

*./ 在Unix上用于指定当前目录

【讨论】:

以上是关于使用 gradlew 和 gradle 的区别的主要内容,如果未能解决你的问题,请参考以下文章

开发这么久,gradle 和 gradlew 啥区别怎么选?

gradlew和gradle的区别

gradlew和gradle的区别

码云Android项目构建注意事项(转载)

项目学习:使用gradle编译项目

Android Gradle 插件Gradle 基础配置 ⑥ ( Android工程 Gradle 常用命令 | gradlew 可执行文件 | 查看帮助文档 | 查看应用依赖 )