gpt4 book ai didi

Gradle:如果从标准输出解析输出文件不是最新的

转载 作者:行者123 更新时间:2023-12-03 03:10:22 25 4
gpt4 key购买 nike

我遇到了问题,即 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,但事实并非如此。

使用标准输出作为输出时,如何使 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:如果从标准输出解析输出文件不是最新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13172215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com