概述
Gradle 中的每一个 Project 都是由一个或者多个 Task 来构成的, 它是 gradle 构建脚本的最小运行单元, 一个 Task 代表一些更加细化的构建, 可能是编译一些 classes 、创建一个 Jar、生成 javadoc、或者生成某个目录的压缩文件.Task 有一些重要的功能: 任务动作(task action)和任务依赖(task dependency). task action定义了任务执行时最小的工作单元, 比如 doFirst 和doLast. task dependency定义了 task 之间的依赖关系, 例如在某个 task 运行之前要运行另外一个 task, 尤其是需要另一个 task 的输出作为输入的时候.
Task 相关命令
./gradlew tasks: 列出当前工程的所有 Task./gradlew [-q] <task name>: 单独执行某个 task, -q 代表 quite 模式, 它不会生成 Gradle 的日志信息 (log messages), 所以用户只能看到 tasks 的输出.
创建任务
默认情况下, 我们创建的每一个 Task 都是 org.gradle.api.DefaultTask 类型, 这是一个通用的 Task 类型. 另外 Gradle 还提供了具有一些特定功能的 Task, 比如 Copy 和 Delete 等, 我们需要时直接继承即可. 另外, 我们还可以创建自己的 Task 类型, 并且可以自行定义我们创建的 Task 类型.
Task 的定义和构造方式也是多种多样的, Gradle 提供了多种方法来定义 Task. 另外 Task 既可以在 build.gradle 文件中直接创建, 也可以由不同的 Plugin 引入.
Task 构造方法
可以通过下面几个方法来构造 Task:
- task myTask: 用 task 关键字构造
- task(): 用 project 的 task 方法构造
- tasks.create: 用 TaskContainer 的 create 方法构造
- myTask extends DefaultTask