我想使用新的Kotlin Gradle插件功能和缓存我的构建结果,了解更多信息请阅读这篇文章。另一种提高构建速度的方法是缓存kapt任务,但默认情况下未启用。
我唯一依赖的kapt依赖项是因为Gradle尚未有一种方法来映射注解处理器的输入和输出
dagger 2
,根据您的经验,是否可以安全地将其缓存?转换过程应该仅使用任务输入,并且不应考虑其他任何因素。默认情况下,任务输入包括源代码、编译类路径、Android布局、编译器和注解处理器选项及实现等一些其他内容,但您可以根据需要注册额外的输入。
违反此规则会导致假缓存命中,当注解处理器使用的某些输入未被跟踪为此类时,这些输入的更改不会反映在Gradle计算的缓存键中,从而导致在运行任务时出现命中,实际上会产生不同的输出。
由注解处理器生成的所有输出都应该被跟踪为任务输出,默认情况下是生成的Java和Kotlin源代码以及生成的二进制类。如果任务生成了其他任何东西,您可以在构建脚本中手动将其注册为任务输出。
不遵循此规则将使一些生成的输出不在缓存范围内,无法保存和加载。
注解处理器应该是纯净的,也就是说,给定相同的输入,它应该产生相同的输出。它不应该显示随机行为或使用系统时间。
对于不遵循此规则的注解处理器缓存输出是徒劳的,因为它经常会导致缓存未命中或假缓存命中。