我遇到了问题,gradle中的Exec任务对于最新检查是否从standardOutput捕获了输出文件有问题。
我试图尽可能简化示例:
task printToOutputFile(type: Exec) {
inputs.file file("file1") // not relevant for this example
outputs.file file("file2")
commandLine = ["echo", "1234"]
standardOutput = new FileOutputStream("file2")
}
重新运行此任务时,我希望它是最新的,但不是。
使用standardOutput作为输出时,如何使UP-TO-DATE检查工作?
我尝试过的
在doLast块中关闭和/或刷新流。
最佳答案
问题是,线
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")
}
}
干杯,
雷内
关于gradle - Gradle:如果从standardOutput解析,则输出文件不是最新的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13172215/