diff options
Diffstat (limited to 'gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KotlinFactories.kt')
-rw-r--r-- | gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KotlinFactories.kt | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KotlinFactories.kt b/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KotlinFactories.kt index be831411..458b38df 100644 --- a/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KotlinFactories.kt +++ b/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KotlinFactories.kt @@ -80,6 +80,16 @@ class KotlinFactories { return project.tasks.register(taskName, KspTaskJvm::class.java).also { kspTaskProvider -> KotlinCompileConfig(KotlinCompilationInfo(kotlinCompilation)) .execute(kspTaskProvider as TaskProvider<KotlinCompile>) + + // useClasspathSnapshot isn't configurable per task. + // Workaround: enable the other path and ignore irrelevant changes + // See [KotlinCompileConfig] in for details. + // FIXME: make it configurable in upstream or support useClasspathSnapshot == true, if possible. + kspTaskProvider.configure { + if (it.classpathSnapshotProperties.useClasspathSnapshot.get()) { + it.classpathSnapshotProperties.classpath.from(project.provider { it.libraries }) + } + } } } @@ -148,6 +158,15 @@ abstract class KspTaskJvm @Inject constructor( @get:OutputDirectory abstract val destination: Property<File> + // Override incrementalProps to exclude irrelevant changes + override val incrementalProps: List<FileCollection> + get() = listOf( + sources, + javaSources, + commonSourceSet, + classpathSnapshotProperties.classpath, + ) + // Overrding an internal function is hacky. // TODO: Ask upstream to open it. @Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER", "EXPOSED_PARAMETER_TYPE") |