There are two flavors of KSP2 artifacts: symbol-processing-aa and symbol-processing-aa-embeddable. They are both uber jars that include almost all runtime dependencies except kotlin-stdlib, kotlinx-coroutines and symbol-processing-common-deps. The -embeddable version is the regular version with all the runtime dependencies renamed, so that it can be used with a Kotlin compiler in the same classpath without name clash. When in doubt, use symbol-processing-aa-embeddable.
Calling KSP2 consists of just 4 steps:
KSPLogger, or use KspGradleLogger, which currently simply writes to stdout.KSPConfigKotlinSymbolProcessing(kspConfig, processors, kspLogger).execute()// Implement a logger or use KspGradleLogger val logger = KspGradleLogger(KspGradleLogger.LOGGING_LEVEL_WARN) // Load processors val processorClassloader = URLClassLoader(classpath.map { File(it).toURI().toURL() }.toTypedArray()) val processorProviders = ServiceLoader.load( processorClassloader.loadClass("com.google.devtools.ksp.processing.SymbolProcessorProvider"), processorClassloader ).toList() as List<SymbolProcessorProvider> // Fill the config val kspConfig = KSPJvmConfig.Builder().apply { // All configurations happen here. See KSPConfig.kt for all available options. moduleName = "main" sourceRoots = listOf(File("/path/to/src1"), File("/path/to/src2")) kotlinOutputDir = File("/path/to/kotlin/out") // ... }.build() // Run! val exitCode = KotlinSymbolProcessing(kspConfig, processorProviders, kspLoggerImpl).execute()