Skip to content

rnett/symbol-export

Repository files navigation

Maven Central Version Maven snapshots Documentation GitHub License

Symbol-export

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.

Getting started

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.

Exporting project

build.gradle.kts
plugins {
    id("dev.rnett.symbol-export.export")
}

name = "foobar"
Your code
package foo.bar

@ExportSymbol
fun bar() {
}

@ExportSymbol
class FooService {
}

Importing project

build.gradle.kts
plugins {
    id("dev.rnett.symbol-export.import")
}

dependencies {
    importSymbols(project(":foobar"))
}
Your code
val bar = Symbols.foobar.foo_bar_bar
val fooService = Symbols.foobar.foo_bar_FooService

By default, the Symbols object is generated with a package matching the importing project's group ID.

Documentation

Documentation can be found at symbol-export.rnett.dev.

About

A tool to export Kotlin symbols for reference by code generators

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •