task详解(五)
作者:互联网
目录
1. task 的声明
//最简单的定义方式,定义一个名字为hello的task,并为这个task传入了一个闭包作为参数。
task hello {
print 'hello world'
}
//我们还可以定义的时候,为Task指定他的类型,分组等一系列配置。这样我们的Task就继成于了Copy这个已经存在的Task,并且分在了Test这个组中。
task hello(type: Copy, group: 'Test') {
print 'hello world'
}
//当然我们还可以将分组等属性的定义放在闭包体中去。如下:
task hello(type: Copy) {
group 'Test'
from 'src/main/doc'
into 'build/target/doc'
}
//其实就是调用了Task类内部的setGroup()方法,以及从Copy类继成下来的from方法和into方法。
2. task的生命周期
首先task有两个定义的方法,doLast和doFirst。
task hello {
doLast{
print "数据已成功存入文件."
}
doFirst{
print "记录已正确生成."
}
print '文件拷贝完成.'
}
这个task执行以后,这三条语句的输出会是什么样子的呢?答案是这样的:
文件拷贝完成.
记录已正确生成.
数据已成功存入文件
Task 分成2个不同的生命周期,配置期和执行期。
配置期的代码总是先于执行期执行的,由于两句代码都是在doLast,doFirst的执行期方法,所以总是后于最后一句的输出。而doFirst总是先于doLast执行。
3. task的执行顺序
如果我们希望task按照我们的希望的执行顺序,该怎么做呢?
task taskA{
print 'i am is task A'
}
task taskB{
print 'i am is task B'
}
taskB.dependsOn taskA
//通过让taskB依赖于taskA,这样taskB在执行的时候就一定会先执行taskA
但是有个问题,如果我只想执行B而不执行A呢,咋办?方法就是使用 mustRunAfter 关键字
taskB.dependsOn taskA
gradle生命周期分三个阶段:
- initialization: 初始化阶段, 其实就是settings.gradle
- configuration: 配置阶段, 其实就是解析每个project 的build.gradle, 形成有向图, 描述project task之间的依赖关系
- execution:运行阶段, 即task真正运行阶段
println '=====在配置阶段执行===='
task configured {
println '=====也在配置阶段执行====='
}
task test << {
println '======运行阶段执行====='
}
task testBoth {
doFirst {
println '======在task运行之前执行======'
}
doLast {
println '======在task运行之后执行======'
}
println '======在配置阶段执行======'
}
标签:Task,taskA,task,print,执行,hello,详解 来源: https://blog.csdn.net/qq_33394088/article/details/100066570