什么是 gradle wrapper 和 gradlew.bat 文件?

新手上路,请多包涵

最近我开始了解 Gradle 作为构建系统的强大功能,作为一名 Android 开发人员,我想深入了解它。

一篇文章 是这样说的:

您可以使用 Gradle 包装器 命令行工具执行您的 Android 项目可用的所有构建任务。它作为 Windows 的批处理文件 ( gradlew.bat ) 和 Linux 和 Mac 的 shell 脚本 ( gradlew.sh ) 提供,并且可以从您使用 Android Studio 创建的每个项目的根目录访问它。

要使用包装器运行任务,请使用以下命令之一:

  • 在 Windows 上:
   gradlew task-name

现在我有一些疑问如下:

  1. 什么是 Gradle Wrapper 和 gradlew.bat
  2. 如果我已经安装了 Android studio 并且它正在使用 gradle 来构建我的应用程序(所以 gradle 已经安装在我的系统上),我是否仍然需要从命令行安装 gradle 用于构建目的?当我在我的命令行上写任何像 gradle , gradlew 这样的表扬时,我得到错误说 gradlew is not recognized as internal or external command 其他–(其他命令的错误)。我可能在错误的路径上使用它,帮助我在什么路径上使用 Gradle 相关命令?
  3. 如果我需要下载并安装它,如何以及在哪里可以找到该文件?其他进程呢?

为此,我正在使用 Windows 机器。

原文由 Abhishek Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

Gradle Wrapper 是 Gradle 构建系统的可选部分。它由您签入版本控制系统的四个文件组成。 Unix 启动脚本 <your root project>/gradlew<your root project>/gradlew.bat Windows 启动脚本, <your root project>/gradle/wrapper/gradle-wrapper.jar 包含类文件并由启动脚本启动 <your root project>/gradle/wrapper/gradle-wrapper.properties 包含包装器的一些配置,例如用于构建项目的 Gradle 版本。

在我看来,每个 Gradle 项目,即使是最小的项目,都应该使用 Gradle 包装器。

Gradle wrapper 确保您的构建始终使用相同的 Gradle 版本运行,无论谁执行构建以及在何处安装 Gradle 或未安装 Gradle,只要使用 Gradle wrapper 构建项目即可。这意味着您可以为该 Gradle 版本设计您的构建,并确保构建不会失败,只是因为有人使用不同版本的 Gradle,因此这也是构建可重复性的重要一步。

此外,希望构建您的项目的人只需要安装 Java,仅此而已。他不需要安装任何 Gradle 版本。实际上任何已经安装的 Gradle 版本都会被忽略。 Gradle 包装器检查 ~/.gradle/ 构建所需的版本是否已经存在,因为任何项目的一些 Gradle 包装器已经把它放在那里了。如果已经存在,则使用它,否则自动下载。

如果您在命令行上键入 gradlew 并且找不到该命令,则意味着您没有将根项目路径放入 PATH 环境变量(我也不建议这样做),您也没有当前在您的根项目目录中。要运行 Gradle 构建,您必须在项目中的任何位置调用 Gradle 或 Gradle 包装器。但是就像任何不在路径上的可执行文件一样,您当然必须提供它的路径。所以如果你在你的根项目目录中,你可以简单地做 gradlew 。如果您在 <root project dir>/foo/bar/ ,则需要致电 ../../gradlew

Gradle Wrapper 文件由隐式可用的 Gradle 任务 wrapper 生成,然后签入相关项目的 VCS。如果项目不存在这四个文件,则它不使用 Gradle 包装器,您应该向项目发布改进请求以添加它。

如果某些项目不使用 Gradle 包装器,而是使用 Gradle 构建,您可以安装 Gradle 并使用 gradle 而不是 gradlew ,或者您甚至可以调用任何其他的 Gradle 包装器您在磁盘上可用的项目。然后构建将使用包装器或 Gradle 安装正在使用的 Gradle 版本运行,因此可能不会按预期运行,这就是为什么每个项目如果使用 Gradle 都应该使用包装器。

原文由 Vampire 发布,翻译遵循 CC BY-SA 4.0 许可协议

评论后编辑

Gradle 是一个构建系统。

这个 gradle-wrapper 是构建 Android 项目的主要接口。它是 Gradle-build-system 的一部分,并且会做一些初步检查是否安装了 gradle。

gradlew.bat - 它是在 Windows 上使用的 批处理文件。您甚至可以用记事本打开它来查看其中的说明。批处理文件就像写在要执行的文件中的“命令”。您使用它(在 Windows 的情况下)来执行构建命令。它还检查是否安装了 gradle。如果不是,它会下载并安装它。

示例:在 Windows 上构建 Android 应用程序:

  • 打开命令提示符
  • 导航到项目的根目录
  • 执行 gradlew.bat assembleDebug

它启动包装器,检查 Gradle 是否安装在那里并执行所有“gradle 特定”命令来构建您的项目。

你需要安装 Gradle 吗?

实际上,不。这个 gradlew 脚本的工作就是检查它。如果 gradle 不存在,它会自动下载它并将其用于所有以后的构建。

原文由 zeekhuge 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题