复制任务不会将复制的文件放入其TaskOutputs中 - 为什么?

时间:2014-02-19 19:55:00

标签: java gradle

目录build.gradle中有一个文件in,以及以下任务:

task cpy(type: Copy) {
  from 'in'
  into 'out'
}

tast testIn << {
  println cpy.inputs.files.files
}

task testOut << {
  println cpy.outputs.files.files
}

为什么gradle testOut仅打印:

[...\out]

gradle testIn打印时:

[...\in\build.gradle]

显然这里存在不一致。任务输入指定它已复制的确切文件,但输出仅指定复制文件的目录,而不是文件本身。这是故意的吗?

我可以想到许多情况,知道复制文件的最终路径是有用的。一个是撤消复制操作;如果没有复制后的实际文件路径,则必须通过遍历输入文件并将其名称附加到输出路径来手动构造它们。那么Gradles的“最新”功能呢 - 如果cpy.outputs是整个目录,即使它只复制了一个文件,那么Gradle拍摄的快照覆盖的范围也超出预期。

1 个答案:

答案 0 :(得分:0)

Copy任务的输出当前被定义为单个输出目录。这是一个已知的限制。