美文网首页
Gradle 任务:多种方式创建任务

Gradle 任务:多种方式创建任务

作者: 冯可乐同学 | 来源:发表于2021-12-29 11:33 被阅读0次

----《Android Gradle 权威指南》学习笔记

总目录:Gradle 学习系列 -- 目录

上一篇:Gradle 构建脚本基础:代码与脚本

下一篇:Gradle 任务 -- 多种方式访问任务

  1. 在 Gradle 中,有很多种方式来创建任务。这都依赖于 Project 提供的快捷方法以及 TaskContainer 提供的相关 create 方法。在阅读一些 Gradle 脚本的时候,见到一些不熟悉的创建任务的方法也不用奇怪,一般都有如下几种创建任务的方式。

  2. 第一种方式:直接以一个任务名字创建任务,举个栗子:

def Task createTask1 = task(createTask1)
createTask1.doLast {
    println "直接以一个任务名字创建任务"
}

在命令行中执行命令:gradle -q createTask1
打印结果:

直接以一个任务名字创建任务

这种创建任务的方式其实就是调用 Project 对象的 task(String name) 方法。

  1. 第二种方式:以一个任务名字 + 一个对该任务配置的 Map 对象来创建任务。举个栗子:
def Task createTask2 = task(createTask2, group: BasePlugin.BUILD_GROUP)
createTask2.doLast {
    println "createTask2:"
    println "任务分组:" + createTask2.group
}

在命令行中执行命令:gradle -q createTask2
打印结果:

createTask2:
任务分组:build

和第一种方式大同小异,只是多了一个 Map 参数,用于对要创建的 Task 进行配置。比如在代码中指定了分组为 BULID,通过打印结果看配置是没有问题的。下面是 Map 中可用的配置:

配置项            描述                                             默认值
type        基于一个存在的 Task 来创建,和类的继承差不多         DefaultTask
overwrite   是否替换存在的 Task,和 type 配合使用                false
dependsOn 用于配置任务的依赖                                     []
action   添加到任务中的一个 Action 或者闭包                      null
description 用于配置任务的描述                                   null
group 用于配置任务的分组                                         null
  1. 第三种方式:任务名字 + 闭包配置。举个栗子:
task createTask3 {
    description("createTask3")
    doLast {
        println "任务描述:" + description
    }
}

在命令行中执行命令:gradle -q createTask3
打印结果:

任务描述:createTask3

因为 Map 参数配置的方式可以配置的项时有限的,所以可以通过闭包的方式进行更加灵活的配置。闭包里面的委托对象就是 Task,所以可以使用 Task 对象的任何方法、属性等信息进行配置。

  1. 第四种方式:TaskContainer 创建任务。举个栗子:
tasks.create('createTask4') {
    description("createTask4")
    doLast {
        println "任务描述:" + description
    }
}

在命令行中执行命令:gradle -q createTask4
打印结果:

任务描述:createTask4
  1. 其实以上方式在源码中最终都是调用 TaskContainer 对象的 create 方法,其参数和 Project 中的 Task 方法基本一样。
相关代码:https://gitee.com/fzq.com/gradle-demos

相关文章

网友评论

      本文标题:Gradle 任务:多种方式创建任务

      本文链接:https://www.haomeiwen.com/subject/lwwcfrtx.html