task是什么
task是gradle构建脚本的最小运行单元,我们通过在gradle脚本中创建task任务,以期完成某个特定的功能,task在build.gradle中定义实现,task本身作为一个单独的运行单元,在编译时通过执行gradle task运行或者通过task之间的依赖运行。
如何定义task
task定义的方法很简单,创建的方式主要为两种:一种迭代声明task任务以及doLast,doFirst方法添加可执行代码;一种是通过 “<<” 快捷创建task任务,闭合执行任务代码。但不仅限于这两种,如下,为两种创建的简单代码格式:
//迭代创建
task A{
doLast{
println "this is task A."
}
}
//可执行的简略创建方式
task B << {
println "this is task B"
}
运行结果如下:
caihaifei@hfcai:$ gradle A
:A
this is task A.
BUILD SUCCESSFUL
Total time: 0.883 secs
caihaifei@hfcai:$ gradle -q B
this is task B
如上所示,直接通过gradle [-q] A(创建的任务名),即可执行查看运行结果。
task之间的依赖
task 可以通过dependsOn实现task任务间的依赖,可以选择直接在定义task时或者定义结束后添加依赖说明,定义依赖根据依赖声明的位置的前后,依赖说明写法略有不同,格式如下所示:
task A{
doLast{
println "this is task A."
}
}
task B << {
println "this is task B"
}
B.dependsOn('E')
task C(dependsOn: B) << {
println "this is task C"
}
task D(dependsOn: 'E') <<{
println "this is task D."
}
task E << {
println "this is task E"
}
A.dependsOn(B)
结果验证可以通过运行task A 、task B 、task C、task D查看结果,结果显示如下:
caihaifei@hfcai:$ gradle -q A
this is task E
this is task B
this is task A.
caihaifei@hfcai:$ gradle -q B
this is task E
this is task B
caihaifei@hfcai:$ gradle -q C
this is task E
this is task B
this is task C
caihaifei@hfcai:$ gradle -q D
this is task E
this is task D.
task的执行方法
task的执行方法如上所是,已经介绍了一些,我们可以通过gradle指定执行task,也可以通过依赖于其他任务而在其他任务执行前执行,除此之外,我们还可以通过在脚本中指定默认执行任务,可以直接通过gradle执行,使用很简单,在脚本开头添加如下格式代码:
defaultTasks 'A','C'
执行方法以及结果如下:
caihaifei@hfcai:~$ gradle -q
this is task E
this is task B
this is task A.
this is task C