前兩篇介紹了Gradle中的Gradle對象和Project對象幼衰,這篇主要介紹Task對象松蒜。
上篇鏈接
Task對象
一個Task表示工程構建過程中的一個原子工作單元幢哨,比如雄人,編譯Java文件或者生成javadoc都是一個Task僚纷。
Task Actions
一個Task由 Action
對象組成的矩距。當一個Task被執(zhí)行,action序列中的action通過調用 Action.execute(T)
依次被執(zhí)行怖竭。
創(chuàng)建Task
上篇提到project對象中有個tasks屬性域锥债,在project中這個屬性域對應著project的一個內置屬性tasks。
我們先來看看這個tasks這個屬性。
println tasks.getClass()
//class org.gradle.api.internal.tasks.DefaultTaskContainer_Decorated
可以看到tasks的類型為DefaultTaskContainer哮肚,實現(xiàn)的是TaskContainer
接口毅整,是task的容器。
我們能夠利用TaskContainer中的方法創(chuàng)建task绽左,如
task.create("hello");
也可以利用task關鍵字去創(chuàng)建task:
task hello{
println "hello"
}
編寫task
- Hello World
task hello{
doLast{
println "Hello Weold"
}
}
解釋一下代碼悼嫉,Task
doLast
(Closure
action)是Task的一個方法,表示的是在hello這個Task的action序列末尾拼窥,方法的參數(shù)是一個閉包戏蔑,即"{}"括起來的代碼是一個閉包。
執(zhí)行上述腳本
D:\gradle-test\gradle-study\7-20>gradle -q hello
Hello Weold
上述命令中-q的作用是幫助我們略去Gradle自身提示log的輸出鲁纠。
- 更簡短的Task定義
task hello << {
println "Hello Weold"
}
"<<"跟上面的doLast方法是一個意思总棵,都是往action序列的末尾加上這個Action。
Task 依賴
一個Task可以依賴另外的Task
task hello << {
println 'Hello world!'
}
task intro(dependsOn: hello) << {
println "I'm Gradle"
}
也可以依賴一個沒有定義過的Task
task intro(dependsOn: "hello") << {
println "I'm Gradle"
}
task hello << {
println 'Hello world!'
}