概述
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