
Exporting library symbols into generated Symbols objects for tooling use, enabling compile-time errors on symbol renames, integrating with compiler plugins, symbol processors and code-gen tools, plus annotation read/write.
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:
[!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.
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:
[!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.