一.任务简介
Gradle的一个优势在于其可扩展域模型。此模型的核心是任务概念。任务是Gradle可以推断出的自约束工作单元。任务的核心是操作,例如,我们可能会声明一个任务来编译某些java源或将某些文件从一个目录复制到另一个,或是只是打印hello.任务可以独立执行某个操作,但也可以声明对其他任务的依赖性。Gradle 会确保所有这些依赖性都在运行,并确保它们的所有依赖性等等。任务还可以定义其输入和输出,它读取自和写入到的文件。这使得Gradle 可以确定任务是否需要执行自己的工作,或者所有内容是否已是最新状态,在这种情况下,它不需要运行。
二.命令行Gradle
Gradle 的第一个技巧在于它知道如何自行安装,它只需要一个shell脚本和一个包含Gradle下载和安装信息的小jar文件,我在这个目录里放置了一个Gradle wrapper 副本。Gradle wrapper 仅包含一个shell 脚本,一个适用于MAC和 Linux,一个适用于Windows且在Gradle目录中有一个小jar文件。
Gradle wrapper 的工作方式是通过Gradle 命令调用它将检查Gradle是否已安装,如果是他会绕过命令,否则Gradle wrapper 会继续并先下载 Gradle 我们继续并运行Gradle Shell脚本,然后看看会发生什么情况。我们尚未安装Gradle ,所以现在正在下载,你看到了很多点,更多的点,好现在完成。Gradle 下载完成,欢迎使用Gradle 2.3看起来Gradle 认为我们需要一些帮助。这个选项可以查看所有可用任务的列表,看起来不错。我们试着运行一下,我们试试使用Gradle wrapper 来运行任务 有很多Gradle 已经知道的任务,我们可以浏览所有这些任务,好像有一个任务在召唤我们,我们来尝试一下这个任务。
现在让我们使用Gradle wrapper 来运行hello任务,我们获得了一个温馨的问候,还有一些诊断输出,真温馨。
Gradle 需要执行大量工作才能启动,这主要是因为它需要加快Java虚拟机的实例,使用Gradle Demon可以缩短启动时间,后台程序只是在操作系统后台等待并执行一些有用操作的流程。系统指示Gradle 使用后台程序时,后台程序已启动并会继续在后台运行,使JVM实例保持活动状态,这使得后续的Gradle 运行可以使用相同的实例。
默认情况下,Android Studio 在命令行运行Gradle 时会始终将此用作Gradle demon,但是你需要明确启用它。简单的说,你应该尽量一直使用后台程序,通过后台程序你可以享受到许多性能优势。后续Gradle 版本还会进一步增强这些优势。