gradlew和gradle的使用区别

343

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

2个回答

330
区别在于使用 ./gradlew 表示你正在使用 Gradle 包装器。包装器通常是项目的一部分,它便于安装 Gradle。如果您不使用包装器,则需要手动安装 Gradle - 例如,在 Mac 上使用 brew install gradle 然后使用 gradle 命令调用它。在两种情况下,您都在使用 Gradle,但前者更方便,并确保在不同机器上版本一致。

每个包装器都与特定版本的 Gradle 相关联,因此当您首次为给定的 Gradle 版本运行上面的命令之一时,它将下载相应的 Gradle 分发并使用它来执行构建。

这不仅意味着您不必手动安装 Gradle,而且还确保使用构建设计的 Gradle 版本。这使得您历史上的构建更加可靠

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

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


12
也许我读错了,但对我来说这听起来像是一个危险信号。听起来像Gradle不向后兼容,或者它正在快速发展(并且不稳定)。那些无法访问互联网的CI服务器会发生什么? - The Impaler
@TheImpaler 我猜你必须安装所有Gradle所需的版本,就像Wrapper如果有网络访问权限那样。 - Ruslan
那么一个简短的结论可能是:始终优先选择 ./gradlew build 而不是 gradle build,对吗? - OrenIshShalom
@OrenIshShalom 正确,你甚至不需要指定构建部分为 cleanbuild,因为当你执行 ./gradlew 时,它们是默认任务。 - Vivek Shukla

106

gradle vs gradlew

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

在幕后,gradlew执行三件主要事情:

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

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

要创建一个包装器,请运行:

gradle wrapper

该命令将生成:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接