kotlin_jvm_library
Kotlin library for the Java virtual machine.
Description#
Compiles Kotlin sources with kotlinc into one Java archive. The provider can
feed other Kotlin targets and Android targets that accept java_library.
Dependency roles distinguish normal, friend, exported, compile-only, and
runtime-only classpaths.
Attributes#
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
module_name | string | no | target name | Kotlin module name |
output | string | no | <target>.jar | Output Java archive file name |
jvm_target | string | no | 17 | Java virtual machine bytecode target |
language_version | string | no | compiler default | Kotlin language version |
api_version | string | no | compiler default | Kotlin application programming interface version |
kotlinc_opts | list<string> | no | [] | Additional Kotlin compiler arguments |
compiler_plugin_jars | list<string> | no | [] | Package-relative Kotlin compiler plug-in Java archives |
compiler_plugin_options | list<string> | no | [] | Kotlin compiler plug-in options passed through -P |
data | list<string> | no | [] | Runtime data patterns propagated to binaries |
kotlinc | string | no | host tool | Override the Kotlin compiler path |
kotlin_home | string | no | inferred | Kotlin installation root used to find the standard library |
kotlin_stdlib | string | no | inferred | Override the Kotlin standard library Java archive path |
java_home | string | no | JAVA_HOME | Java runtime home exposed to the compiler |
Dependency Edges#
| Edge | Accepts | Description |
|---|---|---|
deps | kotlin_jvm_library, java_library | Libraries used for compilation and runtime |
associates | kotlin_jvm_library | Friend modules whose internal declarations are visible during compilation |
exported_deps | kotlin_jvm_library, java_library | Libraries exported to downstream compile and runtime classpaths |
provided_deps | kotlin_jvm_library, java_library | Libraries available for compilation but omitted from this target's runtime classpath |
runtime_deps | kotlin_jvm_library, java_library | Libraries added only to this target's runtime classpath |
Declare named roles under [target.dependencies].
Providers#
The target emits kotlin_jvm_library and java_library.
Provider Record#
| Field | Type | Meaning |
|---|---|---|
compile_jar | string | Java archive used on compile classpaths |
runtime_jar | string | Java archive used on runtime classpaths |
transitive_compile_jars | list<string> | Compile classpath propagated to consumers |
transitive_runtime_jars | list<string> | Runtime classpath propagated to consumers |
transitive_data | list<string> | Runtime data propagated to binaries |
Capabilities#
| Capability | Output groups |
|---|---|
build | default, jar |
Outputs#
| Output | Location |
|---|---|
| Java archive | .once/out/<target>/<output> |
Example#
toml
[[target]]
name = "Greeting"
kind = "kotlin_jvm_library"
srcs = ["src/main/kotlin/**/*.kt"]
[target.dependencies]
provided_deps = ["./CompileApi"]
runtime_deps = ["./RuntimeSupport"]
[target.attrs]
module_name = "greeting"
jvm_target = "17"
Limitations#
Java source compilation, resource packaging, annotation processing, Kotlin symbol processing, incremental compilation, and source-only interface archive generation are not implemented yet. Use an Android target for mixed Android Java and Kotlin sources, or keep these steps behind a script target.