未为任务启用 Gradle 构建缓存

Posted

技术标签:

【中文标题】未为任务启用 Gradle 构建缓存【英文标题】:Gradle build cache is not enabled for task 【发布时间】:2018-11-03 15:57:35 【问题描述】:

我已为我的项目启用 gradle 构建缓存。但是,我们正在使用一些非内置任务,例如来自第三方插件的 npm-install。 Gradle 没有为这些任务启用缓存。例如,当执行此类任务时,它会显示如下内容:

Task :data-export-ui-kjs:npm-configure
Build cache key for task ':data-export-ui-kjs:npm-configure' is bbe0dafcd467a2afb2834acafe2993f5
Caching disabled for task ':data-export-ui-kjs:npm-configure': Caching has not been enabled for the task

有没有办法为此类非内置任务启用构建缓存?

【问题讨论】:

【参考方案1】:

任务需要选择加入缓存(请参阅Cacheable tasks),因为并不是每个任务都可以缓存。

可以通过使用 @CacheableTask 或使用 task.outputs.cacheIf true 注释任务来选择加入,因此您可以为 npm 配置任务执行此操作。

注意可缓存任务需要declare their inputs and outputs correctly。如果他们不这样做,那么您可能会遇到无效的构建失败。

【讨论】:

那么,如何为任务启用缓存? 我的答案已经包含(@CacheableTask 或task.outputs.cacheIf true )。如需更多文档,请参阅Gradle user guide section。【参考方案2】:

Gradle documentation 说:

有些第三方插件可以很好地与构建缓存配合使用。最突出的例子是 android 插件 3.1+ 和 Kotlin 插件 1.2.21+。对于其他第三方插件,请查看其文档以了解它们是否支持构建缓存。

所以这取决于提供任务npm-configure的插件。

如果您使用的是来自 SRS 的 gradle-node-plugin,根据their changelog,它应该从版本 1.2.0 开始工作。

【讨论】:

以上是关于未为任务启用 Gradle 构建缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何在Kotlin中使用Gradle构建缓存?

一个关于Gradle构建缓存的问题

Gradle缓存问题

gradle clean 后 Gradle Build Cache

结合Kotlin使用Gradle build cache

如何让 Intellij IDEA 使用并行和 gradle 构建缓存进行构建