gradle和gradle wrapper

wrapper保证了团队中每一个开发者都使用同样版本的Gradle并能使用Gradle进行项目构建.

1.Gradle Wrapper 是什么?

Gradle Wrapper 由几个文件组成,这些文件在你的项目目录中。

gradlew : shell 脚本,Unix 用户可以通过它来执行 Gradle 任务。

  • gradlew.bat bat 脚本,Windows 用户可以通过它执行 Gradle 任务
  • gradle/wrapper/gradle-wrapper.jar wrapper 的可执行 JAR;wrapper 的代码所在。
  • gradle/wrapper/gradle-wrapper.properties 一个属性文件,用来配置 wrapper

你应该将这些文件 commit 到版本管理器中。它们体积很小,且独立于操作系统,对于 wrapper 的使用是十分重要的

2.Gradle Wrapper 做了什么

当你运行 Gradle Wrapper 时它做了以下几件事:

  1. 解析给予 gradlew 的参数
  2. 安装正确版本的 Gradle
  3. 调用 Gradle 去执行指定的任务

注意 wrapper 仅接受两个可选参数:

  • -q 或 --quiet 去阻止输出
  • -g 或 --gradle-user-home 去指定一个和替换的 Gradle 的 home 目录。

Gradle 的安装阶段是唯一令人十分感兴趣的阶段。首先,它会检查你的 GRADLE_USER_HOME,查看在这个目录下是否有所需要的Gradle。如果这里有,wrapper 就会去调用该Gradle。如果没有,wrapper 会下载所需的Gradle。

有一点需要注意,wrapper 会忽略任何安装在你系统上的 Gradle。wrapper 另外在自己的目录中下载 Gradle,并调用这些 Gradle。当 wrapper 执行任务时,它会使用所有的全局配置,如在Gradle home 目录中的 gradle.properties 文件。

4.哪些是gradle wrapper没有做的

Gradle Wrapper 并没有执行你的任务,它只是确认你有所需要的 Gradle 然后调用它。wrapper 是十分轻量的一层,用来消除开发人员自己管理 Gradle 的麻烦。

这意味着 wrapper 与 Gradle 本身是完全分离的。一个 2014 年的 wrapper 可以使用 Gradle 4.0 构建一个项目,一个今天才安装的 wrapper 可以使用 Gradle 2.0 构建一个项目。

如果你在构建中遇见了一个问题,wrapper 出错的可能性极小,因为它仅仅调用了 Gradle。

4.wrapper配置

Wrapper 的配置

我在前面提到,在你的项目中,其中一个是 wrapper 的配置文件 gradle/wrapper/gradle-wrapper.properties 。

通常这个文件是这样的:

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip

distributionBase + distributionPath 指定了 wrapper 保存下载的 Gradle 的路径。默认情况下 GRADLE_USER_HOME 是 ~/.gradle ,所以这个 wrapper 会保存 Gradle 在 ~/.gradle/wrapper/dists 。

zipStoreBase 和 zipStorePath 是很相似的。它们指定了 wrapper 保存下载的 Gradle 压缩包的位置。

distributionUrl 通常是你比较关心的,通过它你可以指定你需要的 Gradle 版本,和下载的地址。

5.gradle的升级

因为 wrapper 是独立于 Gradle 的。我们怎样去更新它呢?

wrapper 的文档中说:

如果你想切换你所使用的Gradle 版本,你不需要重新执行 wrapper 任务,仅需要在 gradle-wrapper.properties 文件中进行配置。但如果你想从新版本的 wrapper 中受益,你需要重新生成 wrapper 文件。

你应该尽可能的使用新版本的Gradle。你仅需要在 gradle-wrapper.properties 文件中更新 distributionUrl 即可。

通常情况下你不需要更新Gradle Wrapper,但如果你需要,你可以在更新 Gradle 之后通过执行 gradle wrapper 任务来进行更新。你也可以通过执行 gradlewwrapper 来达到目的,这样能使用 wrapper 所调用的 Gradle 版本。升级 wrapper 没有什么问题,但不要期待有令人激动的新特性。自从 2014 年以来,升级 wrapper 完全没有意义。

猜你喜欢

转载自blog.csdn.net/liyang_nash/article/details/80744925
今日推荐