我遇到问题,如果从standardOutput中捕获输出文件,gradle中的Exec任务会出现最新检查问题。
我试图尽可能简化示例:
task printToOutputFile(type: Exec) {
inputs.file file("file1") // not relevant for this example
outputs.file file("file2")
commandLine = ["echo", "1234"]
standardOutput = new FileOutputStream("file2")
}
重新运行此任务时,我希望它是UP-TO-DATE,但事实并非如此。
使用standardOutput作为输出时,如何使UP-TO-DATE检查工作?
我的尝试:
在doLast块中关闭和/或刷新流。
答案 0 :(得分:3)
问题是,该行
standardOutput = new FileOutputStream("file2")
更改file2的lastModified属性。要使最新检查工作,您必须将此分配移至执行阶段。您可以通过将此分配放在doFirst块中来完成此操作。以下代码片段可以解决这个问题:
task printToOutputFile(type: Exec) {
inputs.file file("file1") // not relevant for this example
outputs.file file("file2")
commandLine = ["echo", "1234"]
doFirst{
standardOutput = new FileOutputStream("file2")
}
}
欢呼声,
勒