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

Abh*_*mar 17 performance android gradle android-studio android-gradle-plugin

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

一篇文章说如下: -

"你可以执行所有可用的建设任务,您使用摇篮包装命令行工具的Android项目,它是可以作为的Windows(gradlew.bat)和Linux和Mac(gradlew.sh)shell脚本的批处理文件,它的可以从使用Android Studio创建的每个项目的根目录访问."

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

在Windows上: gradlew任务名称

现在我有一些疑问如下: -

  1. 什么是Gradle Wrapper和gradlew.bat?
  2. 如果我安装了Android工作室并且正在使用gradle来构建我的应用程序(因此gradle已经安装在我的系统中),在这种情况下,我还是需要从命令行安装gradle用于构建目的,就像我写任何一个推荐比如我的命令行上的gradle,gradlew,我得到错误,说gradlew不被识别为内部或外部命令(其他命令的错误相同).我可能在错误的路径上使用它,帮助我在什么路径上使用gradle相关命令?
  3. 如果我需要下载并安装它,我该如何以及在哪里找到该文件?和其他过程?

我正在使用Windows机器.

Vam*_*ire 25

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

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

Gradle包装器确保您的构建始终使用相同的Gradle版本运行,无论谁执行构建以及是否安装了Gradle,只要使用Gradle包装器构建项目.这意味着您可以为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).

  • 我没有真正使用Gradle特定术语.如果你在我的回答中没有理解某些内容,我会很乐意解释或重写,但你需要告诉我你不理解的内容,因为我猜不到你没有. (3认同)