【发布时间】:2016-05-20 18:14:00
【问题描述】:
我有一个 Gradle 任务,它只是将文件从一个文件夹复制到另一个文件夹。
在配置阶段调用复制 'from' 'into' 方法时,它可以工作,但在执行阶段调用它们时,它不会。
这样做是有效的
task copyServerConfig(type:Copy) {
from "${projectDir}" + File.separator + 'server_config'
into localServer
}
gradle copyServerConfig
:copyServerConfig
BUILD SUCCESSFUL
Total time: 0.686 secs
使用 '
task copyServerConfig(type:Copy) << {
from "${projectDir}" + File.separator + 'server_config'
into localServer
}
gradle copyServerConfig
:copyServerConfig UP-TO-DATE
BUILD SUCCESSFUL
Total time: 0.654 secs
如果我将它放在 doFirst{} 块中,也会发生同样的情况。
我不明白的另一件事是:
如果我执行这个任务:
task task1(type:Exec) << {
commandLine 'echo', ' TEST'
}
我收到此错误:
毕业任务1
:task1 FAILED
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':task1'.
execCommand == null!
但如果我改成这样:
task task1(type:Exec) {
commandLine 'echo', ' TEST'
}
毕业任务1
:task1
TEST
BUILD SUCCESSFUL
Total time: 0.655 secs
我阅读了有关构建生命周期的文档,我了解 doFirst{} 和 doLast{} 块内的命令在执行阶段执行,而这些块外的命令在配置阶段执行。
但我认为这里缺少一些重要的概念。为什么会这样?在配置阶段和执行阶段执行命令有什么区别?
【问题讨论】:
标签: gradle build.gradle