的build.gradle
task hello (type: Copy) {
doLast {
println "print from within"
}
println "print from outside"
}
运行时
gradle -q hello
doLast {} 关闭甚至没有触及。将 doLast 更改为 doFirst ,我得到相同的结果:
D:\>gradle -q hello
print from outside
没有doLast或doFirst:
task hello (type: Copy) {
//doLast{
println "print from within"
//}
println "print from outside"
}
它工作正常:
D:\>gradle -q hello
print from within
print from outside
这似乎只发生在Copy类型的任务中。你能帮忙澄清一下吗?我正在使用gradle 2.4。
答案 0 :(得分:3)
如果您在没有-q
切换的情况下运行任务,您会发现任务已标记为UP-TO-DATE
- 这意味着没有操作(并且您通过doLast
添加了操作执行。
为什么?在此特定示例中,您没有为任务配置任何输入和输出。 Copy
任务根据输入和输出确定它是最新的,因为没有配置gradle假定不需要运行它。
答案 1 :(得分:3)
我认为在同一个问题上来到这个地方的人会很有帮助。虽然上述解释在概念上是有意义的。答案中没有提到适当的解决方案。以下是我如何使用Copy
执行doLast
任务的解决方案。
task hello () {
doLast{
copy {
println "print from within"
}
}
println "print from outside"
}
这将提供复制任务和doLast的执行。
$ gradle -q hello
print from outside
print from within
希望这很有用。