- April 1, 2019. Roadmap for rules_kotlin published.
- February 20, 2019. Future directions of rules_kotlin.
- August 14, 2018. Js support. No documentation yet but see the nested example workspace
- August 14, 2018. Android support. No documentation but it's a simple integration. see
- Jun 29, 2018. The commits from this date forward are compatible with bazel
>=0.14. JDK9 host issues were fixed as well some other deprecations. I recommend skipping
0.15.0if you are on a Mac.
- May 25, 2018. Test "friend" support. A single friend dep can be provided to
kt_jvm_testwhich 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
These rules were initially forked from pubref/rules_kotlin. Key changes:
- Replace the macros with three basic rules.
- Use a single dep attribute instead of
- Add support for the following standard java rules attributes:
- Persistent worker support.
- Mixed-Mode compilation (compile Java and Kotlin in one pass).
This section just contains a quick overview. Consult the generated
documentation. Note: Skydoc documentation is no longer being generated.
Comprehensive documentation will have to wait till the new documentation generation tool is ready. A contribution to
port the documentation to the RST format like
rules_go has would be very welcome !
In the project's
WORKSPACE, declare the external repository and initialize the toolchains, like
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") 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() kt_register_toolchains()
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.