[KAPT] Cache annotation processors' classloaders

Adds experimental feature to cache annotation processors' classloaders
It should increase speed of KAPT for consecutive runs
Works for gradle only (it stores cl in gradle daemon)
#KT-28901 Fixed
This commit is contained in:
Andrey Zinovyev
2021-03-02 10:55:42 +03:00
committed by TeamCityServer
parent e6b9935df9
commit 1093bffc62
16 changed files with 419 additions and 41 deletions
@@ -81,9 +81,11 @@ class ClasspathBasedKapt3Extension(
override fun loadProcessors(): LoadedProcessors {
val efficientProcessorLoader = object : ProcessorLoader(options, logger) {
override fun doLoadProcessors(classpath: LinkedHashSet<File>, classLoader: URLClassLoader): List<Processor> {
return ServiceLoaderLite.loadImplementations(Processor::class.java, classLoader)
}
override fun doLoadProcessors(classpath: LinkedHashSet<File>, classLoader: ClassLoader): List<Processor> =
when (classLoader) {
is URLClassLoader -> ServiceLoaderLite.loadImplementations(Processor::class.java, classLoader)
else -> super.doLoadProcessors(classpath, classLoader)
}
}
this.processorLoader = efficientProcessorLoader