Android Gradle Task详解

本文详细介绍了Android Gradle Task的创建、添加Action、任务依赖、排序以及预定义任务等概念。通过示例展示了如何创建task、指定Action、设置依赖关系,以及如何在编译完成后执行自定义代码。同时,文章还涵盖了任务相关属性的使用,如获取任务名字和当前运行任务列表。最后,讲解了如何设置默认任务、覆盖已有的任务以及gradle提供的预定义任务,如clean、build等。
摘要由CSDN通过智能技术生成

创建一个task

创建一个task很简单,直接使用task关键字来创建,最常见的形式是使用task + 名字 + Closure代码块。示例如下。

task ms1 {
   
    println("=================task ms1 added=================")
}

也可以只有task + 名字,就像下面这样。当然这样的task什么也不做。

task myTask

创建task经常还会看到另外一种写法,在名字后面加上 << 符号。

task hello << {
   
    println 'Hello world!'
}

这种写法和下面的写法是等同的,也就是在创建task的时候为其添加了一个action到末尾。不过这种写法目前已被标记为deprecated,预期会在Gradle 5.0版本中移除,所以最好不要再使用了。

task hello {
   
    doLast {
   
        println 'Hello world!'
    }
}

上述几种写法都有一个共同点,就是创建task的时候必须指定一个名字,每个task都需要有一个名字,所有的task在创建之后都隶属于某个Project。同一个Project中任意两个task的名字不能相同。

此外,添加task不一定要在build.gradle的最外层,可以放在任意的代码块中,只是在执行时机上有所区别。

如下代码将task hello放到了allprojects()中执行,它会为项目中每一个project创建一个名为hello的task。

allprojects {
    task hello
}

如下代码则在循环中创建了task0,task1,task2,task3四个不同的task。

4.times { index ->
    task "task$index" {
        println "I'm task number $index"
    }
}

创建task的时候还可以指定一些参数。比较重要的有:

  1. type: task类型
  2. dependsOn:依赖的task列表
  3. group:task所属的组

其他参数可以参见 https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/TaskContainer.html#create-java.util.Map-

为task添加Action

每个task中可以包含0到多个Action,这些Action保存在一个ArrayList成员变量中,当执行这个task时,会按照顺序依次执行所有的Action。

要为task添加Action,可以通过task的doFirst()和doLast()方法来实现。doFirst()方法会将Action添加到ArrayList的开头,而doLast()方法则将Action添加到ArrayList的末尾。可以有多个doFirst()和doLast(),配置task时会按照它们出现的先后顺序添加到Action列表中。

创建task的同时添加Action

可以在创建task的同时添加Action,只需要将其添加到创建task的闭包中即可。

以下代码在创建ms1 task的时候为它添加了4个action。

task ms1 {
   
    doFirst {
   
        println("=================ms1 doFirst1=================")
    }
    doFirst {
   
        println("=================ms1 doFirst2=================")
    }
    doLast {
   
        println("=================ms1 doLast1=================")
    }
    doLast {
   
        println("=================ms1 doLast2=================")
    }
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值