- May 25, 2018. Test "friend" support. A single friend dep can be provided to
kt_jvm_test
which allows the test to access internal members of the module under test. - February 15, 2018. Toolchains for the JVM rules. Currently this allow tweaking:
- The JVM target (bytecode level).
- API and Language levels.
- Coroutines, enabled by default.
- February 9, 2018. Annotation processing.
- February 5, 2018. JVM rule name change: the prefix has changed from
kotlin_
tokt_jvm_
.
These rules were initially forked from pubref/rules_kotlin. Key changes:
- Replace the macros with three basic rules.
kotlin_binary
,kotlin_library
andkotlin_test
. - Use a single dep attribute instead of
java_dep
anddep
. - Add support for the following standard java rules attributes:
data
resource_jars
runtime_deps
resources
resources_strip_prefix
exports
- Persistent worker support.
- Mixed-Mode compilation (compile Java and Kotlin in one pass).
In the project's WORKSPACE
, declare the external repository and initialize the toolchains, like
this:
kotlin_release_version="1.2.30"
rules_kotlin_version = "67f4a6050584730ebae7f8a40435a209f8e0b48e"
http_archive(
name = "io_bazel_rules_kotlin",
urls = ["https://github.com/bazelbuild/rules_kotlin/archive/%s.zip" % rules_kotlin_version],
type = "zip",
strip_prefix = "rules_kotlin-%s" % rules_kotlin_version
)
load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kotlin_repositories", "kt_register_toolchains")
kotlin_repositories(kotlin_release_version=kotlin_release_version)
kt_register_toolchains()
If you omit kotlin_release_version
and just call kotlin_repositories()
with no arguments,
you'll get the current kotlin compiler version (at least as known to the rules_kotlin project).
In your project's BUILD
files, load the kotlin rules and use them like so:
load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kt_jvm_library")
kt_jvm_library(
name = "package_name",
srcs = glob(["*.kt"]),
deps = [
"//path/to/dependency",
],
)
This project is licensed under the Apache 2.0 license, as are all contributions
See the CONTRIBUTING doc for information about how to contribute to this project.