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

Java 复制任务不会将复制的文件放入其TaskOutputs中-为什么?,java,gradle,Java,Gradle,在目录中有一个文件build.gradle,并执行以下任务: 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打印时:

在目录中有一个文件build.gradle,并执行以下任务:

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拍摄的快照所涵盖的内容也比它应该涵盖的要多。

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