Workaround for kotlin.incremental.useClasspathSnapshot
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 be83141..458b38d 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 @@
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 @@
@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")