文章目的
本章中我们将会学习到如何自定义任务(Task)的类型,了解Gradle是怎么增强任务的功能的。
需要准备
一个熟悉的IDE开发工具
JDK 7及以上
Gradle 3.2以上
Gradle的两种任务类型
在上一章中(http://www.jianshu.com/p/a41769bf5118), 我们介绍了任务(Task)的一些高级用法,知道了Gradle对任务的功能增强很多,那么它是具体如何做到的呢?在揭晓答案之前,我们先来看看Gradle都支持哪两种类型的任务吧。
第一种为简单任务类型,就是我们在之前一篇文章中介绍的(http://www.jianshu.com/p/a7b947c86650), 它的行为是定义在一个动作闭包方法中的, 这种简单类型的任务适合在一个编译脚本中实现一种功能。而第二种为增强的任务类型,它的行为被提前构建在了任务里,只是提供一些配置属性让我们去设置,这种任务可以在不的地方或不同的编译脚本中被重复使用,它正是我们上一章中介绍的任务类型。
这种高级的增强的任务类型是通过定义一个任务类来实现的,在Gradle中我们也可以自定义自己的增强类型类,我们可以使用多种语言来实现,比如java、scala等。不过Gradle本身是使用Groovy语言实现的,所以我在这里选择使用Groovy语言来实现。
实现自定义的任务类型
首先有三种方式来编写我们的任务类
在我们构建项目的build.gradle脚本中直接编写,这种方式的好处是任务类自动被编译加载到我们的classpath中,我们不需要额外做任何的事情,但是它有很明显的局限性,就是除了在包括它的脚本外别的地方无法复用。