美文网首页
Gradle 任务 -- 多种方式访问任务

Gradle 任务 -- 多种方式访问任务

作者: 冯可乐同学 | 来源:发表于2021-12-30 09:26 被阅读0次

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

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

上一篇:Gradle 任务:多种方式创建任务

下一篇:Gradle 任务 -- 任务分组和描述

  1. 在前面的知识中已经通过一些方式访问了任务,比如把创建的任务赋值给一个变量,然后对其进行操作等。

  2. 第一种方式:创建的任务都会作为项目(Project)的一个属性,属性名就是任务名,所以可以直接通过该任务名称访问和操纵该任务。举个栗子,在 build.gradle 文件中有以下代码:

task exeTask1
exeTask1.doLast {
    println "exeTask1.doLast"
}

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

exeTask1.doLast
  1. 第二种方式:由于任务都是通过 TaskContainer 创建的,其实 TaskContainer 就是创建任务的集合,在 Project 中可以通过 tasks 属性访问 TaskContainer。所以可以通过访问集合元素的方式访问任务。举个栗子,在 builder.gradle 中有以下代码:
task exeTask2
tasks['exeTask2'].doLast {
    println "exeTask2.doLast"
}

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

exeTask2.doLast
  1. 第三种方式:通过路径访问。通过路径访问有两种方式,一种是 get,另一种是 find。它们的区别在于:get 如果找不到该任务就是抛出 UnknownTaskException 异常,而 find 在找不到该任务的会返回 null。举个栗子,在 builder.gradle 中有以下代码:
task exeTask3
tasks['exeTask3'].doLast {
    println tasks.findByPath(':exeTask3')
    println tasks.findByPath(':exeTaskXX')
    println tasks.getByPath(':exeTask3')
    println tasks.getByPath(':exeTaskXX')
}

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

task ':exeTask3'
null
task ':exeTask3'

FAILURE: Build failed with an exception.
  1. 第四种方式:通过名称访问。通过名称访问也有 get 和 find 两种方式。举个栗子,在 builder.gradle 中有以下代码:
task exeTask4
tasks['exeTask4'].doLast {
    println tasks.findByName('exeTask4')
    println tasks.findByName('exeTaskXX')
    println tasks.getByName('exeTask4')
    println tasks.getByName('exeTaskXX')
}

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

task ':exeTask4'
null
task ':exeTask4'

FAILURE: Build failed with an exception.

注意:通过路径访问的时候,参数值可以是任务路径也可以是任务的名字。但是通过名字访问的时候,参数只能是任务名字,不是为路径。

相关代码:https://gitee.com/fzq.com/gradle-demos

相关文章

网友评论

      本文标题:Gradle 任务 -- 多种方式访问任务

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