gradle复习(8)-Task中行为

Behaviour

之前在学习的时候说到了可以给任务添加行为behaviour,看一下下面的例子:

task hello << {
println "Hello Earth"
}
hello.doFirst {
println "Hello Venus"
}
hello << {
println "Hello Jupiter"
}
hello.doLast {
println "Hello Mars"
}

输出如下:

D:gradle_product123>gradle -q hello
Hello Venus
Hello Earth
Hello Jupiter
Hello Mars

doFirst和doLast这些标识就是行为,代表你所定义的hello任务的一些附加行为,不同等级的行为,跟你在build.gradle中定义的顺序是没关系的,但是同一等级的就有关系,谁先定义的,就会先执行那一部分。

不同等级

比如我们将doFirst和doLast的位置调换,看执行的顺序:

task hello << {
println "Hello Earth"
}
hello << {
println "Hello Jupiter"
}
hello.doLast {
println "Hello Mars"
}
hello.doFirst {
println "Hello Venus"
}

输出:

D:gradle_product123>gradle -q hello
Hello Venus
Hello Earth
Hello Jupiter
Hello Mars

经过实际验证,输出是没有变化的。

相同等级

比如hello.doLast和hello<<所定义的行为属于相同等级,都是在hello任务执行完再执行。这个时候的执行顺序是跟你定义的顺序是有关系的,比如我们将上面的hello<<移到doLast后面

task hello << {
println "Hello Earth"
}
hello.doLast {
println "Hello Mars"
}
hello << {
println "Hello Jupiter"
}
hello.doFirst {
println "Hello Venus"
}

输出:

D:gradle_product123>gradle -q hello
Hello Venus
Hello Earth
Hello Mars
Hello Jupiter
文章导航