使用 gradlew 和 gradle 的区别
Posted
技术标签:
【中文标题】使用 gradlew 和 gradle 的区别【英文标题】:Difference between using gradlew and gradle 【发布时间】:2017-01-30 08:01:26 【问题描述】:使用gradlew
和gradle
有什么区别或者它们是一样的吗?
【问题讨论】:
【参考方案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 正确,您甚至不必将构建部分指定为 clean
和 build
是默认任务,当您执行 ./gradlew
【参考方案2】:
gradle 与 gradlew
gradlew
是一个使用gradle
的包装器(w - 字符)。
在后台gradlew
执行三个主要操作:
gradle
版本
解析参数
调用gradle
任务
使用 Gradle Wrapper,我们可以将项目分发/共享给所有人,以使用相同的版本和 Gradle 的功能(编译、构建、安装...),即使它尚未安装。
创建包装器运行:
gradle wrapper
这个命令生成:
gradle-wrapper.properties
将包含有关 Gradle 分发的信息
*./
在Unix上用于指定当前目录
【讨论】:
以上是关于使用 gradlew 和 gradle 的区别的主要内容,如果未能解决你的问题,请参考以下文章
开发这么久,gradle 和 gradlew 啥区别怎么选?
Android Gradle 插件Gradle 基础配置 ⑥ ( Android工程 Gradle 常用命令 | gradlew 可执行文件 | 查看帮助文档 | 查看应用依赖 )