最近我开始了解 Gradle 作为构建系统的强大功能,作为一名 Android 开发人员,我想深入了解它。
一篇文章 是这样说的:
您可以使用 Gradle 包装器 命令行工具执行您的 Android 项目可用的所有构建任务。它作为 Windows 的批处理文件 (
gradlew.bat
) 和 Linux 和 Mac 的 shell 脚本 (gradlew.sh
) 提供,并且可以从您使用 Android Studio 创建的每个项目的根目录访问它。要使用包装器运行任务,请使用以下命令之一:
- 在 Windows 上:
gradlew task-name
现在我有一些疑问如下:
- 什么是 Gradle Wrapper 和
gradlew.bat
? - 如果我已经安装了 Android studio 并且它正在使用 gradle 来构建我的应用程序(所以 gradle 已经安装在我的系统上),我是否仍然需要从命令行安装 gradle 用于构建目的?当我在我的命令行上写任何像
gradle
,gradlew
这样的表扬时,我得到错误说gradlew is not recognized as internal or external command
其他–(其他命令的错误)。我可能在错误的路径上使用它,帮助我在什么路径上使用 Gradle 相关命令? - 如果我需要下载并安装它,如何以及在哪里可以找到该文件?其他进程呢?
为此,我正在使用 Windows 机器。
原文由 Abhishek Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
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 都应该使用包装器。