是否可以从任务的输出文件中排除一个元素,以便不考虑它进行最新的检查?在我的情况下,我有一个复制任务,自动在输出变量中设置目标目录,但我想删除它并只设置一些复制的文件。
或者,作为替代方案,是否可以覆盖整个输出变量?
谢谢, 米歇尔。
答案 0 :(得分:2)
增量任务从任务的输入和输出文件创建快照。如果两个任务执行的这些快照相同(基于文件内容的哈希代码),则Gradle假定该任务是最新的。
您无法从输出中删除某些文件,并且希望Gradle忘记它们,只是因为哈希码会有所不同。
有一个选项允许您手动定义最新检查的逻辑。
您应该在TaskOutputs类中使用方法upToDateWhen(Closure upToDateClosure)
。
task myTask {
outputs.dir files('/home/user/test')
outputs.upToDateWhen {
// your logic here
return true; // always up-to-date
}
}
答案 1 :(得分:0)
我找到了解决方案:
task reduceZip(type: Copy) {
outputs.files.setFrom(file("C:/temp/unzip/test.properties"))
outputs.file(file("C:/temp/unzip/test.txt"))
from zipTree("C:/temp/temp.zip")
into "C:/temp/unzip"
}
可以修改Outputs.files列表只注册新元素,而不是删除(据我所知)。所以我需要重置列表,然后最终添加其他文件。 outputs.files.setFrom
方法重置outputs.files列表,因此可以添加其他文件。在上面的示例中,我将最新的检查仅减少到test.properties和test.txt文件。