2

我有一个配置了本地和远程缓存的 Gradle 版本。除其他外,我使用Spotless Gradle 插件。该插件已将其任务 (spotlessCheckspotlessApply) 标记为可缓存。问题是,在我的情况下,任务本身非常快,因此在远程缓存中检查任务的输出比实际运行任务需要更多的时间。

所以我的问题是:是否可以为第三个插件引入的一项任务禁用缓存?更好的是,是否可以只为一项任务禁用远程缓存?

4

2 回答 2

1

我认为您提到的这两个特定任务没有启用构建缓存。但其他人喜欢spotlessJava这样做。

在任何情况下,当您确定哪些任务使用构建缓存(例如通过运行-i)时,您可以使用outputs.cacheIf { false }.

请注意,这会禁用本地和远程构建缓存。我不知道有一种方法可以选择性地仅禁用给定任务的远程缓存,但保持启用本地缓存。

例如:

tasks.named("spotlessJava") {
    outputs.cacheIf { false }
}
于 2021-04-08T08:25:00.343 回答
0

我认为仅禁用远程缓存是不可能的,但是如果您的问题是缓存结果太大并且尝试上传它会浪费很多时间(无论如何总是会失败),您可以使用useExpectContinue解决这个问题孵化财产。

它会在上传之前尝试检查是否可以上传,这对我来说已经足够了。

于 2021-09-06T15:38:01.770 回答