我在子项目dir中的build.gradle中有一个任务:
task copyResources {
copy {
from 'cli'
into 'build/cli'
}
copy {
from 'module'
into 'build/module'
}
}
它的目的是将两个文件夹从项目目录复制到Gradle的构建文件夹。但由于目标文件夹被称为“构建”,因此执行其他任务可能会引入一些奇怪的行为(例如,干净)。
当我尝试将此任务移至执行阶段时,它不会运行:
跳过任务':copyResources'因为它没有行动。
据我所知,这是正确的行为,因为必须在配置阶段设置Copy任务的源和目标。
是否可以推迟执行此任务,因此它会在“构建”之后运行。任务?或者我必须使用一些普通的Java / Groovy代码创建不同的任务,而不使用Gradle的copy(),并且仅在执行阶段运行它?
答案 0 :(得分:4)
他们定义了任务,复制是在配置时间内完成的。如果要将其移动到执行时间,可以将其包装到doLast
块中,如下所示。
task copyResources {
doLast {
copy {
from 'cli'
into 'build/cli'
}
copy {
from 'module'
into 'build/module'
}
}
}
以下是一些可能有助于理解执行与配置时间的文档:https://docs.gradle.org/current/userguide/build_lifecycle.html