我有一个用于复制的gradle任务,如下所示:
task hello << {
println "hello"
}
task myCopy(type: Copy) {
println "copy"
from(file('srcDir'))
into(buildDir)
}
但是&#34; myCopy&#34;即使我执行&#34;你好&#34;如下所示:
gradle hello
现在我明白这是预期的行为。我在这里阅读了整个Gradle Task页面:https://docs.gradle.org/current/userguide/more_about_tasks.html。但我想制作&#34; myCopy&#34;任务仅在显式执行时执行。换句话说,我想让它成为&#34; myCopy&#34;我执行&#34; hello&#34;时不执行,只在我运行命令时执行:
gradle myCopy
有办法做到这一点吗?感谢
答案 0 :(得分:1)
它没有被执行,而是被配置了。仔细看看,如果您没有运行复制任务,则不会复制任何内容。配置总是会发生,并且对于您拥有的所有任务,在您的情况下,您正在打印&#34;复制&#34;在配置期间。将其移动到doLast部分以在执行阶段打印它,如:
task myCopy(type: Copy) {
doLast {
println 'Copy'
}
from(file('srcDir'))
into(buildDir)
}
注意,doLast闭包与使用&lt;&lt;的任务闭包相同。签名,只有在执行阶段执行任务时才会执行。