Gradle高阶-Task基础

969 阅读2分钟

首先学习下Task的基础内容。

查看任务

首先我们可以通过使用

./gradlew tasks

查看当前工程下的所有task以及它们各自的信息

新建任务

  • 使用task函数
    在xxx.gradle文件创建 task+任务名称的格式:
task helloTask

这样就创建了一个新的Task

这其实就是调用Project源码中Task方法

Task task(String name) throws InvalidUserDataException

还可以借鉴源码中方法打印出task中的内容

Task task(String name,Closure configureClosure)

例:

task helloTask{
    println 'this is hello task.'
}

我们可以通过gradlew命令输出task中的内容:

./gradlew hellotask
  • 使用TaskContainer容器
TaskContainer getTask();

通过容器来创建

Task create(Map<String,?> options,Closure configureClosure) 

例:

this.tasks.create(name:'task1'){
    println 'this is create task.'
}

这两种创建方式都没有区别,通过task函数创建的task最终还是会添加到TaskContainer容器中的。换而言之,一个TaskContainer可以有很多task。

下面了解TaskContainer中的常用方法

  1. 通过path路径查找task
//找不到后返回null
Task findByPath(String path);
//找不到后返回Exception
Task getByPath(String path) throws UnknownTaskException;
  1. 创建task
Task create(Map<String,?> options) throws InvalidUserDataException

Task create(Map<String,?> options,Closure configureClosure) 

Task create(String name) throws InvalidUserDataException
  1. 代替已有task任务名
Task replace(String name);
<T extends Task> T replace(String name,Class<T> type);

不过现在使用override来代替replace方法

总的来说TaskContainer的作用就是就是查找和添加task,作用于gradle配置阶段

Task配置

  1. 在定义的时候就配置
task helloTask(group:'personal',description:'task learn'){
    println 'this is hello task.'
}
  1. 创建代码块中添加配置代码,通过setxxx来操作
this.tasks.create(name:'task1'){
    setGroup('personal')
    setDescription('task learn')
    println 'this is hello task.'
}

这样添加配置group的时候就会按照组来分类,方便我们进行查找 常见的配置如下:

总结

  1. 了解如何查看task和创建task
  2. 掌握task的基本API用法
  3. 学习如何配置task