Gradle 文件树懒惰的平面复制

标签 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 执行复制,但要复制的文件是在执行阶段确定的?

最佳答案

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

from { fileTree(...).files }

关于Gradle 文件树懒惰的平面复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24149510/

相关文章:

android - Gradle同步失败: Unsupported class file major version

gradle - 在 Gradle 中设置 JAVA_OPTS 和 JAVA_TOOL_OPTIONS

android - 在 Android Studio 中调试动态加载的 native 库?

android - Artifactory 使用资源发布 Android 库

maven - 用于gradle的多个Maven存储库

Ansible 默默地跳过任务/调试

android - 单击小部件将任务置于最前面

java - 将 jar 依赖项添加到 gradle 任务,而不实际将其类包含到输出中

android - Gradle 可以使用已编译的 Android APK 作为依赖项吗?

task - 用多个点命名 grunt js 任务和文件