繁体   English   中英

在gradle和kapt中使用useBuildCache

[英]Using useBuildCache in gradle and kapt

我想使用新的kotlin gradle插件功能并缓存我的构建结果,有关详细信息,请阅读此内容 增强构建的另一种方法是缓存kapt任务,但默认情况下不启用它

因为Gradle还没有办法为注释处理器映射输入和输出

我拥有的唯一kapt依赖是dagger 2 ,根据你的经验,缓存它是否安全?

缓存Kapt任务的输出不被认为是安全的原因是注释处理器包含可能不符合确保正确缓存的一个或多个要求的任意代码:

  • 转换应该只使用任务输入,不应该考虑任何其他因素。 默认情况下,任务输入包括源,编译类路径,Android布局,编译器和注释处理器选项和实现以及其他一些内容,但您可以根据需要注册其他输入。

    当注释处理器使用的某些输入未被跟踪时,违反此规则会导致错误的高速缓存命中,并且这些输入的更改不会反映在Gradle计算的高速缓存键中,从而导致在运行任务时出现命中实际上会产生不同的产出。

  • 注释处理器生成的所有输出都应作为任务输出进行跟踪,默认情况下生成Java和Kotlin源,并生成二进制类。 如果任务生成其他任何内容,您可以手动将其注册为构建脚本中的任务输出。

    不遵循此规则会将一些生成的输出保留在缓存之外,而不是保存它们,因此不会加载它们。

  • 注释处理器应该是纯粹的,也就是说,给定相同的输入,它应该产生相同的outpupts。 它不应显示随机行为或使用系统时间。

    不遵循此规则的注释处理器的高速缓存输出是徒劳的,因为它通常会导致高速缓存未命中或错误的高速缓存命中。

据我所知,Dagger 2遵循这些规则,缓存其输出应该可以正常工作,但我无法提供相应的保证。 无论如何,请随意尝试并查看缓存如何适用于您的构建。

如果您遇到任何与根据上述规则应该与缓存相关的特定注释处理器的问题,请向Kotlin问题跟踪器报告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM