我将使用一个简单的任务来说明我的问题。(我真正的任务是一个 python 脚本,它根据一组输入的 xml 文件和图像文件生成图像。该任务的输出是一个包含不同 xml 文件和图像的目录。)
无论如何,考虑这个任务:
task t {
inputs.dir 'src'
outputs.dir 'dst'
doLast {
copy {
from 'src'
into 'dst'
}
}
}
将文件foo.txt
放入src/
. 现在运行gradle t
。结果: 中有一个新文件foo.txt
。dst/
如果我gradle t
再次运行,它会说它是 UP-TO-DATE 并且没有运行。好的。现在,如果我删除dst/foo.txt
,它将运行,正确检测到目标已更改。
此外,如果我编辑 的内容dst/foo.txt
,它会识别更改。好的!
但是,如果我在其中添加一个附加文件dst
,例如dst/badfile.txt
,它不会将其识别为“脏”输出目录。
由于我将输出目录定义为一个目录,而不是一组输出文件,我希望它能够检查目录的整个状态。为什么它不认为附加文件有区别?或者我在这里错过了什么?