Gradle:如果从standardOutput解析,则输出文件不是最新的

时间:2012-11-01 06:43:49

标签: gradle

我遇到问题,如果从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块中关闭和/或刷新流。

1 个答案:

答案 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")
    }
}

欢呼声,