我有一个配置了本地和远程缓存的 Gradle 版本。除其他外,我使用Spotless Gradle 插件。该插件已将其任务 (spotlessCheck
和spotlessApply
) 标记为可缓存。问题是,在我的情况下,任务本身非常快,因此在远程缓存中检查任务的输出比实际运行任务需要更多的时间。
所以我的问题是:是否可以为第三个插件引入的一项任务禁用缓存?更好的是,是否可以只为一项任务禁用远程缓存?
我有一个配置了本地和远程缓存的 Gradle 版本。除其他外,我使用Spotless Gradle 插件。该插件已将其任务 (spotlessCheck
和spotlessApply
) 标记为可缓存。问题是,在我的情况下,任务本身非常快,因此在远程缓存中检查任务的输出比实际运行任务需要更多的时间。
所以我的问题是:是否可以为第三个插件引入的一项任务禁用缓存?更好的是,是否可以只为一项任务禁用远程缓存?
我认为您提到的这两个特定任务没有启用构建缓存。但其他人喜欢spotlessJava
这样做。
在任何情况下,当您确定哪些任务使用构建缓存(例如通过运行-i
)时,您可以使用outputs.cacheIf { false }
.
请注意,这会禁用本地和远程构建缓存。我不知道有一种方法可以选择性地仅禁用给定任务的远程缓存,但保持启用本地缓存。
例如:
tasks.named("spotlessJava") {
outputs.cacheIf { false }
}
我认为仅禁用远程缓存是不可能的,但是如果您的问题是缓存结果太大并且尝试上传它会浪费很多时间(无论如何总是会失败),您可以使用useExpectContinue解决这个问题孵化财产。
它会在上传之前尝试检查是否可以上传,这对我来说已经足够了。