在Gradle中银还,Task扮演著一個(gè)非常重要的角色。當(dāng)執(zhí)行一個(gè)Gradle命令時(shí),真正幫我們干活的就是Gradle的task肿轨。比如:命令行grade tasks
其實(shí)就是執(zhí)行“tasks”這個(gè)task上炎,來顯示Project中的所有task信息恃逻。本文將總結(jié)一下如何自己實(shí)現(xiàn)一個(gè)簡單的task雏搂。
Show me the code。我們直接來看代碼寇损,每一項(xiàng)內(nèi)容都已做注釋凸郑。
task myTask {
// 在配置解析階段運(yùn)行
println "Configuration stage: Hello Task"
// Action在task執(zhí)行階段運(yùn)行。
// 向Action list頭中添加action矛市。
doFirst {
println "Execution stage"
println "First action? No"
}
// 向Action list尾添加action
doLast {
println "Last action? No"
}
}
// 向Action list頭添加新的action芙沥,此時(shí)本action將成為task第一個(gè)執(zhí)行的action。
myTask.doFirst {
println "Am I the first action? Yes"
}
// 向Action list尾添加一個(gè)新的action浊吏。由于后面又添加了一個(gè)action而昨,所以這個(gè)不是最后執(zhí)行的action。
myTask {
doLast {
println "Am I the last action? No"
}
}
// “<<"是doLast的別名找田,讓代碼看起來更簡潔歌憨。在action list尾添加action,所以這是最后執(zhí)行的action墩衙。
myTask << {
println "Am I the last action? Yes"
}
運(yùn)行gradle myTask -q
务嫡,輸出結(jié)果如下,//后為結(jié)果的注釋漆改。
Configuration stage: Hello Task //在配置階段
// 以下為執(zhí)行階段心铃,可以清楚地看出Action執(zhí)行的順序。
Am I the first action? Yes
Execution stage
First action? No
Last action? No
Am I the last action? No
Am I the last action? Yes
其中挫剑,task
是Project中定義的method于个,用于創(chuàng)建task,其Signature為
Task task(Map<String,?> args,
String name,
Closure configureClosure)
更多信息請參考[官方文檔](https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#task(java.util.Map, java.lang.String, groovy.lang.Closure)
)暮顺。