gpt4 book ai didi

gradle - "Up To Date"Gradle任务无输出时的状态

转载 作者:行者123 更新时间:2023-12-02 19:53:23 24 4
gpt4 key购买 nike

当任务不产生任何输出时,如何正确地将 Gradle 任务标记为“最新”?如果上次运行成功并且输入自那时以来没有更改,则任务应保持“最新”。 Gradle 指南在 15.9.2 部分之前指出,如下:

"A task with no defined outputs will never be considered up-to-date."

在这种情况下如何将任务标记为最新?看来 Gradle 需要知道上次成功运行的时间,然后将其与输入的上次修改时间进行比较。作为解决方法,脚本可以创建/触摸一个空文件以将任务标记为完成?还有其他建议的解决方法吗?

最佳答案

思考不同的场景......

  • 没有任何输入或输出的任务。这些一直在运行。这可能只是包装现有的“做某事”可执行文件。

  • 具有输入输出的任务。当输入或输出发生变化时它们就会运行。这可能是一个编译器。

  • 仅具有输出的任务。这些仅在输出已更改/不存在时运行。这可能是下载一些东西的东西。 (我认为这些在现实中很少见,我会将下载的 URL 算作输入。)

  • 有输入但没有输出的任务。我在实践中没有遇到过这些。

就像您所说的,您可以使用空的输出文件来欺骗最新检查。内置Gradle Test任务与您所描述的最相似,并且它有一个“报告”作为其输出。我想你可能也会有类似的东西。它可以像捕获任务的 stdout/stderr 并将其放入文件一样简单。当一切都过去时,这不太有用,但当事情失败时,它会很有用。

当然,任何这些都可以用自定义的 upToDateWhen 代码来补充。例如,您有一个启动网络服务器的任务,并且当网络服务器已经运行时它是“最新的”。我认为这与您在此描述的内容不太相符。

首先,我会尝试:

outputs.files file("${buildDir}/reports/${name}.out")

我认为无论是否在文件中实际放入某些内容,这都可以工作。

关于gradle - "Up To Date"Gradle任务无输出时的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29599011/

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