Symbol-export is a tool for exporting symbols from Kotlin libraries so that they can be referenced by tooling such as compiler plugins or annotation processors.
Features:
- Compile time errors if symbol names change
- Integrations with the Kotlin compiler, KSP, and Kotlinpoet
- Reading and writing of annotation instances, including their arguments, from compiler plugins or annotation processors
Warning
Compatibility of compiler plugins with Kotlin's Incremental Compilation is somewhat iffy and may cause issues in some scenarios.
All you need to do is apply the Gradle plugins to the appropriate projects and add a dependency between the exported symbols and the project that uses them.
plugins {
id("dev.rnett.symbol-export.export")
}
name = "foobar"package foo.bar
@ExportSymbol
fun bar() {
}
@ExportSymbol
class FooService {
}plugins {
id("dev.rnett.symbol-export.import")
}
dependencies {
importSymbols(project(":foobar"))
}val bar = Symbols.foobar.foo_bar_bar
val fooService = Symbols.foobar.foo_bar_FooServiceBy default, the Symbols object is generated with a package matching the importing project's group ID.
Documentation can be found at symbol-export.rnett.dev.