【问题标题】:Disable remote Gradle cache for one task为一项任务禁用远程 Gradle 缓存
【发布时间】:2021-07-03 09:27:17
【问题描述】:

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

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

【问题讨论】:

    标签: gradle gradle-cache


    【解决方案1】:

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

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

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

    例如:

    tasks.named("spotlessJava") {
        outputs.cacheIf { false }
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-11-03
        • 1970-01-01
        • 2016-09-23
        • 1970-01-01
        • 2013-12-11
        • 1970-01-01
        • 2018-11-18
        • 2019-03-04
        • 2014-11-10
        相关资源
        最近更新 更多