Gradle filetree懒惰的平面副本

时间:2014-06-10 19:37:38

标签: gradle task build.gradle

我有一项任务需要将在执行阶段创建的文件(它们是gcov单元测试阶段的产品)复制到另一个目录中。目前,我的代码只会在第二次执行时正确执行(即在创建目录结构中的文件时)。然而,第一次,我得到一个跳过任务,没有源文件"调试消息。

task copyGcovObj(type: Copy, dependsOn: 'test') {
    description "Copies gcov files into build/testOutput directory."
    from fileTree(dir: "$buildDir/objectFiles", includes: ["**/*.gcno", "**/*.gcda"]).files
    into ("$buildDir/testOutput")
}

代码来自此处:Flat copy。任务'测试'引用的是执行单元测试的任务。

我认为问题在于,在配置阶段,没有要复制的文件,因此Gradle会跳过该任务。如果它再次执行,Gradle会看到有文件,因此执行复制。如何使Gradle执行复制,但是在执行阶段确定要复制的文件?

1 个答案:

答案 0 :(得分:9)

frominto接受闭包以推迟对参数的评估,因此这应该有所帮助:

from { fileTree(...).files }
相关问题