Rules
kt_compiler_plugin
Define a plugin for the Kotlin compiler to run. The plugin can then be referenced in the plugins
attribute
of the kt_jvm_*
rules.
An example can be found under //examples/plugin
:
kt_compiler_plugin(
name = "open_for_testing_plugin",
id = "org.jetbrains.kotlin.allopen",
options = {
"annotation": "plugin.OpenForTesting",
},
deps = [
"@com_github_jetbrains_kotlin//:allopen-compiler-plugin",
],
)
kt_jvm_library(
name = "open_for_testing",
srcs = ["OpenForTesting.kt"],
)
kt_jvm_library(
name = "user",
srcs = ["User.kt"],
plugins = [":open_for_testing_plugin"],
deps = [
":open_for_testing",
],
)
name
A unique name for this target.
compile_phase
Runs the compiler plugin during kotlin compilation. Known examples: allopen
, sam_with_reciever
deps
The list of libraries to be added to the compiler's plugin classpath
id
The ID of the plugin
options
Dictionary of options to be passed to the plugin. Supports the following template values:
{generatedClasses}
: directory for generated class output{temp}
: temporary directory, discarded between invocations{generatedSources}
: directory for generated source output
stubs_phase
Runs the compiler plugin in kapt stub generation.
target_embedded_compiler
Plugin was compiled against the embeddable kotlin compiler. These plugins expect shaded kotlinc dependencies, and will fail when running against a non-embeddable compiler.
kt_javac_options
Define java compiler options for kt_jvm_*
rules with java sources.
name
A unique name for this target.
warn
Control warning behaviour.
x_ep_disable_all_checks
See javac -XepDisableAllChecks documentation
x_lint
See javac -Xlint: documentation
xd_suppress_notes
See javac -XDsuppressNotes documentation
kt_jvm_binary
Builds a Java archive ("jar file"), plus a wrapper shell script with the same name as the rule. The wrapper shell script uses a classpath that includes, among other things, a jar file for each library on which the binary depends.
Note: This rule does not have all of the features found in java_binary
.
It is appropriate for building workspace utilities. java_binary
should be preferred for release artefacts.
name
A unique name for this target.
data
The list of files needed by this rule at runtime. See general comments about data
at
Attributes common to all build rules.
deps
A list of dependencies of this rule.See general comments about deps
at
Attributes common to all build rules.
javac_opts
Javac options to be used when compiling this target. These opts if provided will be used instead of the ones provided to the toolchain.
jvm_flags
A list of flags to embed in the wrapper script generated for running this binary. Note: does not yet support make variable substitution.
kotlinc_opts
Kotlinc options to be used when compiling this target. These opts if provided will be used instead of the ones provided to the toolchain.
main_class
Name of class with main() method to use as entry point.
module_name
The name of the module, if not provided the module name is derived from the label. --e.g.,
//some/package/path:label_name
is translated to
some_package_path-label_name
.
plugins
resource_jars
Set of archives containing Java resources. If specified, the contents of these jars are merged into the output jar.
resource_strip_prefix
The path prefix to strip from Java resources, files residing under common prefix such as
src/main/resources
or src/test/resources
or kotlin
will have stripping applied by convention.
resources
A list of files that should be include in a Java jar.
runtime_deps
Libraries to make available to the final binary or test at runtime only. Like ordinary deps, these will appear on the runtime classpath, but unlike them, not on the compile-time classpath.
srcs
The list of source files that are processed to create the target, this can contain both Java and Kotlin files. Java analysis occurs first so Kotlin classes may depend on Java classes in the same compilation unit.
kt_jvm_import
Import Kotlin jars.
examples
# Old style usage -- reference file groups, do not used this.
kt_jvm_import(
name = "kodein",
jars = [
"@com_github_salomonbrys_kodein_kodein//jar:file",
"@com_github_salomonbrys_kodein_kodein_core//jar:file"
]
)
# This style will pull in the transitive runtime dependencies of the targets as well.
kt_jvm_import(
name = "kodein",
jars = [
"@com_github_salomonbrys_kodein_kodein//jar",
"@com_github_salomonbrys_kodein_kodein_core//jar"
]
)
# Import a single kotlin jar.
kt_jvm_import(
name = "kotlin-stdlib",
jars = ["lib/kotlin-stdlib.jar"],
srcjar = "lib/kotlin-stdlib-sources.jar"
)
name
A unique name for this target.
deps
Compile and runtime dependencies
exported_compiler_plugins
Exported compiler plugins.
Compiler plugins listed here will be treated as if they were added in the plugins attribute of any targets that directly depend on this target. Unlike java_plugins' exported_plugins, this is not transitive
exports
Exported libraries.
Deps listed here will be made available to other rules, as if the parents explicitly depended on these deps. This is not true for regular (non-exported) deps.
jar
The jar listed here is equivalent to an export attribute.
jars
The jars listed here are equavalent to an export attribute. The label should be either to a single
class jar, or one or more filegroup labels. The filegroups, when resolved, must contain only one jar
containing classes, and (optionally) one peer file containing sources, named <jarname>-sources.jar
.
DEPRECATED - please use jar
and srcjar
attributes.
neverlink
If true only use this library for compilation and not at runtime.
runtime_deps
Additional runtime deps.
srcjar
The sources for the class jar.
kt_jvm_library
This rule compiles and links Kotlin and Java sources into a .jar file.
name
A unique name for this target.
data
The list of files needed by this rule at runtime. See general comments about data
at
Attributes common to all build rules.
deps
A list of dependencies of this rule.See general comments about deps
at
Attributes common to all build rules.
exported_compiler_plugins
Exported compiler plugins.
Compiler plugins listed here will be treated as if they were added in the plugins attribute
of any targets that directly depend on this target. Unlike java_plugin
s exported_plugins,
this is not transitive
exports
Exported libraries.
Deps listed here will be made available to other rules, as if the parents explicitly depended on these deps. This is not true for regular (non-exported) deps.
javac_opts
Javac options to be used when compiling this target. These opts if provided will be used instead of the ones provided to the toolchain.
kotlinc_opts
Kotlinc options to be used when compiling this target. These opts if provided will be used instead of the ones provided to the toolchain.
module_name
The name of the module, if not provided the module name is derived from the label. --e.g.,
//some/package/path:label_name
is translated to
some_package_path-label_name
.
neverlink
If true only use this library for compilation and not at runtime.
plugins
resource_jars
Set of archives containing Java resources. If specified, the contents of these jars are merged into the output jar.
resource_strip_prefix
The path prefix to strip from Java resources, files residing under common prefix such as
src/main/resources
or src/test/resources
or kotlin
will have stripping applied by convention.
resources
A list of files that should be include in a Java jar.
runtime_deps
Libraries to make available to the final binary or test at runtime only. Like ordinary deps, these will appear on the runtime classpath, but unlike them, not on the compile-time classpath.
srcs
The list of source files that are processed to create the target, this can contain both Java and Kotlin files. Java analysis occurs first so Kotlin classes may depend on Java classes in the same compilation unit.
kt_jvm_test
Setup a simple kotlin_test.
Notes:
- The kotlin test library is not added implicitly, it is available with the label
@com_github_jetbrains_kotlin//:kotlin-test
.
name
A unique name for this target.
data
The list of files needed by this rule at runtime. See general comments about data
at
Attributes common to all build rules.
deps
A list of dependencies of this rule.See general comments about deps
at
Attributes common to all build rules.
friends
A single Kotlin dep which allows the test code access to internal members. Currently uses the output jar of the module -- i.e., exported deps won't be included.
javac_opts
Javac options to be used when compiling this target. These opts if provided will be used instead of the ones provided to the toolchain.
jvm_flags
A list of flags to embed in the wrapper script generated for running this binary. Note: does not yet support make variable substitution.
kotlinc_opts
Kotlinc options to be used when compiling this target. These opts if provided will be used instead of the ones provided to the toolchain.
main_class
module_name
The name of the module, if not provided the module name is derived from the label. --e.g.,
//some/package/path:label_name
is translated to
some_package_path-label_name
.
plugins
resource_jars
Set of archives containing Java resources. If specified, the contents of these jars are merged into the output jar.
resource_strip_prefix
The path prefix to strip from Java resources, files residing under common prefix such as
src/main/resources
or src/test/resources
or kotlin
will have stripping applied by convention.
resources
A list of files that should be include in a Java jar.
runtime_deps
Libraries to make available to the final binary or test at runtime only. Like ordinary deps, these will appear on the runtime classpath, but unlike them, not on the compile-time classpath.
srcs
The list of source files that are processed to create the target, this can contain both Java and Kotlin files. Java analysis occurs first so Kotlin classes may depend on Java classes in the same compilation unit.
test_class
The Java class to be loaded by the test runner.
kt_kotlinc_options
Define kotlin compiler options.
name
A unique name for this target.
include_stdlibs
Don't automatically include the Kotlin standard libraries into the classpath (stdlib and reflect).
warn
Control warning behaviour.
x_allow_jvm_ir_dependencies
Suppress errors thrown when using dependencies not compiled by the IR backend.
x_allow_result_return_type
Enable kotlin.Result as a return type
x_inline_classes
Enable experimental inline classes
x_jvm_default
Specifies that a JVM default method should be generated for non-abstract Kotlin interface member.
x_no_optimized_callable_references
Do not use optimized callable reference superclasses. Available from 1.4.
x_skip_prerelease_check
Suppress errors thrown when using pre-release classes.
x_use_experimental
Allow the experimental language features.
x_use_ir
Enable or disable the experimental IR backend.
Macros and Functions
define_kt_toolchain
Define the Kotlin toolchain.
name
language_version
api_version
jvm_target
experimental_use_abi_jars
javac_options
kotlinc_options
kt_android_library
Creates an Android sandwich library.
srcs
, deps
, plugins
are routed to kt_jvm_library
the other android
related attributes are handled by the native android_library
rule.
name
exports
visibility
kwargs
kt_js_import
name
kwargs
kt_js_library
name
kwargs
kt_register_toolchains
This macro registers the kotlin toolchain.