完成所有任務后,我想播放音樂。我不知道如何將它與最后一個任務/事件掛鉤。
到目前為止,我設法下載和播放音樂,我可以手動執行它。
這是我的代碼(主要是作業):
def tempSound = "/tmp/gradleBuildFinished.wav"
task downloadMusic {
doLast {
println "downloadMusic"
def sounds = [
"http://www.xxx.zzz/hos1.wav",
"http://www.xxx.zzz/hos2.wav",
]
def r = new Random()
def soundIndex = r.nextInt(sounds.size())
println "Deleting temp sound: " delete(tempSound)
exec {
commandLine("bash", "-c", "curl " sounds.get(soundIndex) " > " tempSound)
}
}
}
task playMusic {
dependsOn downloadMusic
doLast {
println "playMusic"
assert file(tempSound).exists()
("afplay " tempSound).execute()
}
}
gradle.buildFinished{
// how to execute playMusic? It will trigger when all tasks are done, right?
}
uj5u.com熱心網友回復:
好的,這就是答案。主要任務應該已經由 assemble 任務完成。
def tempSound = "/tmp/gradleBuildFinished.wav"
task downloadAssembleSound() {
doLast {
println "> Task :downloadAssembleSound"
def sounds = [
"http://www.xxx.zzz/hos",
]
def r = new Random()
def soundIndex = r.nextInt(sounds.size())
def soundNumber = r.nextInt(3) 1
delete(tempSound)
def sound = sounds.get(soundIndex) soundNumber ".wav"
println "Fetching.... " sound
exec {
commandLine("bash", "-c", "curl " sound " > " tempSound)
}
}
}
task playAssembleSound {
dependsOn { downloadAssembleSound }
doLast {
println "> Task :playAssembleSound"
assert file(tempSound).exists()
("afplay " tempSound).execute()
}
}
tasks.whenTaskAdded { task ->
if (task.name.contains('assemble') && task.name.contains('Debug')) {
task.finalizedBy {
playAssembleSound
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/516430.html
