GitHub - bazelbuild/rules_kotlin: Bazel rules for Kotlin
source link: https://github.com/bazelbuild/rules_kotlin
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Announcements
- 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_
.
Overview
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).
Usage
WORKSPACE
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).
BUILD files
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",
],
)
License
This project is licensed under the Apache 2.0 license, as are all contributions
Contributing
See the CONTRIBUTING doc for information about how to contribute to this project.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK