open class GreetingTask : DefaultTask() {
var greeting = "hello from GreetingTask"
@TaskAction
fun greet() {
println(greeting)
}
}
// Use the default greeting
task<GreetingTask>("hello")
// Customize the greeting
task<GreetingTask>("greeting") {
greeting = "greetings from GreetingTask"
}
執(zhí)行gradle --quiet hello greeting
結(jié)果
hello from GreetingTask
greetings from GreetingTask
結(jié)論 一個是修改了,一個是沒修改炊苫,執(zhí)行會默認(rèn)調(diào)用@TaskAction
里面的方法
// tag::all[]
// tag::task[]
class GreetingToFileTask extends DefaultTask {
def destination
File getDestination() {
project.file(destination)
}
@TaskAction
def greet() {
def file = getDestination()
file.parentFile.mkdirs()
file.write 'Hello!'
}
}
// end::task[]
// tag::config[]
task greet(type: GreetingToFileTask) {
destination = { project.greetingFile }
}
task sayGreeting(dependsOn: greet) {
doLast {
println file(greetingFile).text
}
}
ext.greetingFile = "$buildDir/hello.txt"
執(zhí)行gradle --quiet sayGreeting
結(jié)論研底, 先執(zhí)行 任務(wù) greet,而這個任務(wù)會執(zhí)行寫入hello到hello.txt 然后sayGreeting執(zhí)行就把寫入的文本打印出來。
任務(wù)的變量寫法
task myCopy(type: Copy)
// tag::configure[]
Copy myCopy = tasks.getByName("myCopy")
myCopy.from 'resources'
myCopy.into 'target'
myCopy.include('**/*.txt', '**/*.xml', '**/*.properties')
或者
task myCopy(type: Copy)
// end::declare-task[]
// tag::configure[]
// Configure task using Groovy dynamic task configuration block
myCopy {
from 'resources'
into 'target'
}
myCopy.include('**/*.txt', '**/*.xml', '**/*.properties')
或者
task copy(type: Copy) {
// end::no-description[]
description 'Copies the resource directory to the target directory.'
// tag::no-description[]
from 'resources'
into 'target'
include('**/*.txt', '**/*.xml', '**/*.properties')
}
都是一個意思,是代表從這個目錄復(fù)制指定后綴的到某個目錄漱办。
finalizedBy
task taskX {
doLast {
println 'taskX'
}
}
task taskY {
doLast {
println 'taskY'
}
}
taskX.finalizedBy taskY
表示不管成功或者失敗都會在taskX執(zhí)行完畢之后執(zhí)行taskY,