

<!--
Documentation generated by Skydoc
-->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width initial-scale=1" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <title>Kotlin Rules</title>

    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700" type="text/css">
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <link rel="stylesheet" href="https://code.getmdl.io/1.1.1/material.green-light_blue.min.css">
    <script defer src="https://code.getmdl.io/1.1.1/material.min.js"></script>
    <link rel="stylesheet" href="https://bazelbuild.github.io/rules_kotlin/main.css">
  </head>
  <body>
    <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer
      mdl-layout--fixed-header">
      <header class="mdl-layout__header">
        <div class="mdl-layout__header-row">
          <span class="mdl-layout-title">Kotlin Rules</span>
        </div>
      </header>
      <div class="mdl-layout__drawer">
        <span class="mdl-layout-title">Bazel</span>
        <nav class="drawer-nav">
          <ul class="drawer-nav">
            
<li><a href="https://bazelbuild.github.io/rules_kotlin/index.html">Overview</a></li>
<li>
  <a href="https://bazelbuild.github.io/rules_kotlin/kotlin/kotlin.html">Kotlin Rules</a>
  <ul>
    <li><a href="https://bazelbuild.github.io/rules_kotlin/kotlin/kotlin.html#overview">Overview</a></li>
    <li>
      <a href="https://bazelbuild.github.io/rules_kotlin/kotlin/kotlin.html#kt_jvm_binary">
        kt_jvm_binary
      </a>
    </li>
    <li>
      <a href="https://bazelbuild.github.io/rules_kotlin/kotlin/kotlin.html#kt_jvm_import">
        kt_jvm_import
      </a>
    </li>
    <li>
      <a href="https://bazelbuild.github.io/rules_kotlin/kotlin/kotlin.html#kt_jvm_library">
        kt_jvm_library
      </a>
    </li>
    <li>
      <a href="https://bazelbuild.github.io/rules_kotlin/kotlin/kotlin.html#kt_jvm_test">
        kt_jvm_test
      </a>
    </li>
  </ul>
</li>

          </ul>
        </nav>
      </div>

      <main class="mdl-layout__content">
        <div class="page-content">
          <h1>Kotlin Rules</h1>

<nav class="toc">
  <h2><a href="#overview">Overview</a></h2>
  <h2>Rules</h2>
  <ul>
    <li><a href="#kt_jvm_binary">kt_jvm_binary</a></li>
    <li><a href="#kt_jvm_import">kt_jvm_import</a></li>
    <li><a href="#kt_jvm_library">kt_jvm_library</a></li>
    <li><a href="#kt_jvm_test">kt_jvm_test</a></li>
  </ul>
  <h2>Macros</h2>
  <ul>
    <li><a href="#kotlin_repositories">kotlin_repositories</a></li>
  </ul>
</nav>
          <hr>
          <h2 id="overview">Overview</h2>
          <h3>Setup</h3>
<p>Add the following snippet to your <code>WORKSPACE</code> file:</p>
<pre><code class="lang-bzl">git_repository(
    name = &quot;io_bazel_rules_kotlin&quot;,
    remote = &quot;https://github.com/bazelbuild/rules_kotlin.git&quot;,
    commit = &quot;&lt;COMMIT_HASH&gt;&quot;,
)
load(&quot;@io_bazel_rules_kotlin//kotlin:kotlin.bzl&quot;, &quot;kotlin_repositories&quot;)
kotlin_repositories(kotlin_release_version = &quot;1.2.21&quot;)
</code></pre>
<p>To enable persistent worker support, add the following to the appropriate <code>bazelrc</code> file:</p>
<pre><code>build --strategy=KotlinCompile=worker
test --strategy=KotlinCompile=worker
</code></pre>
<h3>Standard Libraries</h3>
<p>The Kotlin libraries that are bundled in a kotlin release should be used with the rules, the mandatory standard libraries are added implicetly. After enabling
the repository the following Kotlin Libraries are also made available from the workspace <code>com_github_jetbrains_kotlin</code>:</p>
<ul>
<li><code>kotlin-test</code>,</li>
<li><code>kotlin-reflect</code>.</li>
</ul>
<p>So if you needed to add reflect as a dep use the following label <code>@com_github_jetbrains_kotlin//:kotlin-reflect</code>.</p>

          <hr>

          <h2 id="kotlin_repositories">kotlin_repositories</h2>

          <pre>kotlin_repositories(<a href="#kotlin_repositories.kotlin_release_version">kotlin_release_version</a>)</pre>

          <p>Call this in the WORKSPACE file to setup the Kotlin rules.</p>


          <h3 id="kotlin_repositories_args">Attributes</h3>

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="kotlin_repositories.kotlin_release_version">
      <td><code>kotlin_release_version</code></td>
      <td>
        <p><code>Unknown; Optional</code></p>
        <p>The kotlin compiler release version. If this is not set the latest release version is
chosen by default.</p>
      </td>
    </tr>
  </tbody>
</table>
          <hr>

          <h2 id="kt_jvm_binary">kt_jvm_binary</h2>

          <pre>kt_jvm_binary(<a href="#kt_jvm_binary.name">name</a>, <a href="#kt_jvm_binary.deps">deps</a>, <a href="#kt_jvm_binary.data">data</a>, <a href="#kt_jvm_binary.resources">resources</a>, <a href="#kt_jvm_binary.srcs">srcs</a>, <a href="#kt_jvm_binary.jvm_flags">jvm_flags</a>, <a href="#kt_jvm_binary.main_class">main_class</a>, <a href="#kt_jvm_binary.resource_jars">resource_jars</a>, <a href="#kt_jvm_binary.resource_strip_prefix">resource_strip_prefix</a>, <a href="#kt_jvm_binary.runtime_deps">runtime_deps</a>)</pre>

          <p>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.</p>
<p><strong>Note:</strong> This rule does not have all of the features found in <a href="https://docs.bazel.build/versions/master/be/java.html#java_binary"><code>java_binary</code></a>. It is
appropriate for building workspace utilities. <code>java_binary</code> should be preferred for release artefacts.</p>


          <h3 id="kt_jvm_binary_args">Attributes</h3>

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="kt_jvm_binary.name">
      <td><code>name</code></td>
      <td>
        <p><code><a href="https://bazel.build/docs/build-ref.html#name">Name</a>; Required</code></p>
        <p>A unique name for this rule.</p>
      </td>
    </tr>
    <tr id="kt_jvm_binary.deps">
      <td><code>deps</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>A list of dependencies of this rule.See general comments about <code>deps</code> at <a href="https://docs.bazel.build/versions/master/be/common-definitions.html#common-attributes">Attributes common to all build rules</a>.</p>
      </td>
    </tr>
    <tr id="kt_jvm_binary.data">
      <td><code>data</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>The list of files needed by this rule at runtime. See general comments about <code>data</code> at <a href="https://docs.bazel.build/versions/master/be/common-definitions.html#common-attributes">Attributes common to all build rules</a>.</p>
      </td>
    </tr>
    <tr id="kt_jvm_binary.resources">
      <td><code>resources</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>A list of data files to include in a Java jar.</p>
      </td>
    </tr>
    <tr id="kt_jvm_binary.srcs">
      <td><code>srcs</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>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.</p>
      </td>
    </tr>
    <tr id="kt_jvm_binary.jvm_flags">
      <td><code>jvm_flags</code></td>
      <td>
        <p><code>List of strings; Optional; Default is []</code></p>
        <p>A list of flags to embed in the wrapper script generated for running this binary. Note: does not yet support make variable substitution.</p>
      </td>
    </tr>
    <tr id="kt_jvm_binary.main_class">
      <td><code>main_class</code></td>
      <td>
        <p><code>String; Required</code></p>
        <p>Name of class with main() method to use as entry point.</p>
      </td>
    </tr>
    <tr id="kt_jvm_binary.resource_jars">
      <td><code>resource_jars</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>Set of archives containing Java resources. If specified, the contents of these jars are merged into the output jar.</p>
      </td>
    </tr>
    <tr id="kt_jvm_binary.resource_strip_prefix">
      <td><code>resource_strip_prefix</code></td>
      <td>
        <p><code>String; Optional; Default is ''</code></p>
        <p>The path prefix to strip from Java resources, files residing under common prefix such as <code>src/main/resources</code> or <code>src/test/resources</code>
will have stripping applied by convention.</p>
      </td>
    </tr>
    <tr id="kt_jvm_binary.runtime_deps">
      <td><code>runtime_deps</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>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.</p>
      </td>
    </tr>
  </tbody>
</table>
          <hr>

          <h2 id="kt_jvm_import">kt_jvm_import</h2>

          <pre>kt_jvm_import(<a href="#kt_jvm_import.name">name</a>, <a href="#kt_jvm_import.jars">jars</a>, <a href="#kt_jvm_import.srcjar">srcjar</a>)</pre>

          <p>(experimental) Import Kotlin jars.</p>
<p><strong>Status:</strong> This rule is not a counterpart to <code>java_import</code>. The current purpose for this rule is to import a kotlin jar without creating ijars. It will
eventually <a href="https://github.com/bazelbuild/rules_kotlin/issues/4">be replaced</a> with <code>java_import</code>. If there is a need for expanding this rule we can instead
create a utility macro that delegates to this.</p>
<h2>examples</h2>
<pre><code class="lang-bzl"># Import a collection of class jars and source jars from filegroup labels.
kt_jvm_import(
    name = &quot;kodein&quot;,
    jars = [
        &quot;@com_github_salomonbrys_kodein_kodein//jar:file&quot;,
        &quot;@com_github_salomonbrys_kodein_kodein_core//jar:file&quot;
    ]
)

# Import a single kotlin jar.
kt_jvm_import(
    name = &quot;kotlin-runtime&quot;,
    jars = [&quot;lib/kotlin-runtime.jar&quot;],
    srcjar = &quot;lib/kotlin-runtime-sources.jar&quot;
)
</code></pre>


          <h3 id="kt_jvm_import_args">Attributes</h3>

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="kt_jvm_import.name">
      <td><code>name</code></td>
      <td>
        <p><code><a href="https://bazel.build/docs/build-ref.html#name">Name</a>; Required</code></p>
        <p>A unique name for this rule.</p>
      </td>
    </tr>
    <tr id="kt_jvm_import.jars">
      <td><code>jars</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Required</code></p>
        <p>The jars listed here are equavalent to an export attribute. The label should be either to a single class jar, or multiple filegroup labels. When the
labels is a file_provider it should follow the conventions used in repositories generated by the maven_jar rule  --i.e., the rule expects a file_provider
with a single class jar and a single source jar. a source jar is recognized by the suffix <code>-sources.jar</code>.</p>
      </td>
    </tr>
    <tr id="kt_jvm_import.srcjar">
      <td><code>srcjar</code></td>
      <td>
        <p><code><a href="https://bazel.build/docs/build-ref.html#labels">Label</a>; Optional</code></p>
        <p>The sources for the class jar. This should be set when importing a single class jar.</p>
      </td>
    </tr>
  </tbody>
</table>
          <hr>

          <h2 id="kt_jvm_library">kt_jvm_library</h2>

          <pre>kt_jvm_library(<a href="#kt_jvm_library.name">name</a>, <a href="#kt_jvm_library.deps">deps</a>, <a href="#kt_jvm_library.data">data</a>, <a href="#kt_jvm_library.resources">resources</a>, <a href="#kt_jvm_library.srcs">srcs</a>, <a href="#kt_jvm_library.exports">exports</a>, <a href="#kt_jvm_library.resource_jars">resource_jars</a>, <a href="#kt_jvm_library.resource_strip_prefix">resource_strip_prefix</a>, <a href="#kt_jvm_library.runtime_deps">runtime_deps</a>)</pre>

          <p>This rule compiles and links Kotlin and Java sources into a .jar file.</p>


          <h3 id="kt_jvm_library_args">Attributes</h3>

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="kt_jvm_library.name">
      <td><code>name</code></td>
      <td>
        <p><code><a href="https://bazel.build/docs/build-ref.html#name">Name</a>; Required</code></p>
        <p>A unique name for this rule.</p>
      </td>
    </tr>
    <tr id="kt_jvm_library.deps">
      <td><code>deps</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>A list of dependencies of this rule.See general comments about <code>deps</code> at <a href="https://docs.bazel.build/versions/master/be/common-definitions.html#common-attributes">Attributes common to all build rules</a>.</p>
      </td>
    </tr>
    <tr id="kt_jvm_library.data">
      <td><code>data</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>The list of files needed by this rule at runtime. See general comments about <code>data</code> at <a href="https://docs.bazel.build/versions/master/be/common-definitions.html#common-attributes">Attributes common to all build rules</a>.</p>
      </td>
    </tr>
    <tr id="kt_jvm_library.resources">
      <td><code>resources</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>A list of data files to include in a Java jar.</p>
      </td>
    </tr>
    <tr id="kt_jvm_library.srcs">
      <td><code>srcs</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>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.</p>
      </td>
    </tr>
    <tr id="kt_jvm_library.exports">
      <td><code>exports</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>Exported libraries.</p>
<p>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.</p>
      </td>
    </tr>
    <tr id="kt_jvm_library.resource_jars">
      <td><code>resource_jars</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>Set of archives containing Java resources. If specified, the contents of these jars are merged into the output jar.</p>
      </td>
    </tr>
    <tr id="kt_jvm_library.resource_strip_prefix">
      <td><code>resource_strip_prefix</code></td>
      <td>
        <p><code>String; Optional; Default is ''</code></p>
        <p>The path prefix to strip from Java resources, files residing under common prefix such as <code>src/main/resources</code> or <code>src/test/resources</code>
will have stripping applied by convention.</p>
      </td>
    </tr>
    <tr id="kt_jvm_library.runtime_deps">
      <td><code>runtime_deps</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>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.</p>
      </td>
    </tr>
  </tbody>
</table>
          <hr>

          <h2 id="kt_jvm_test">kt_jvm_test</h2>

          <pre>kt_jvm_test(<a href="#kt_jvm_test.name">name</a>, <a href="#kt_jvm_test.deps">deps</a>, <a href="#kt_jvm_test.data">data</a>, <a href="#kt_jvm_test.resources">resources</a>, <a href="#kt_jvm_test.srcs">srcs</a>, <a href="#kt_jvm_test.jvm_flags">jvm_flags</a>, <a href="#kt_jvm_test.resource_jars">resource_jars</a>, <a href="#kt_jvm_test.resource_strip_prefix">resource_strip_prefix</a>, <a href="#kt_jvm_test.runtime_deps">runtime_deps</a>, <a href="#kt_jvm_test.test_class">test_class</a>)</pre>

          <p>Setup a simple kotlin_test.</p>
<p><strong>Notes:</strong></p>
<ul>
<li>The kotlin test library is not added implicitly, it is available with the label <code>@com_github_jetbrains_kotlin//:kotlin-test</code>.</li>
</ul>


          <h3 id="kt_jvm_test_args">Attributes</h3>

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="kt_jvm_test.name">
      <td><code>name</code></td>
      <td>
        <p><code><a href="https://bazel.build/docs/build-ref.html#name">Name</a>; Required</code></p>
        <p>A unique name for this rule.</p>
      </td>
    </tr>
    <tr id="kt_jvm_test.deps">
      <td><code>deps</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>A list of dependencies of this rule.See general comments about <code>deps</code> at <a href="https://docs.bazel.build/versions/master/be/common-definitions.html#common-attributes">Attributes common to all build rules</a>.</p>
      </td>
    </tr>
    <tr id="kt_jvm_test.data">
      <td><code>data</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>The list of files needed by this rule at runtime. See general comments about <code>data</code> at <a href="https://docs.bazel.build/versions/master/be/common-definitions.html#common-attributes">Attributes common to all build rules</a>.</p>
      </td>
    </tr>
    <tr id="kt_jvm_test.resources">
      <td><code>resources</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>A list of data files to include in a Java jar.</p>
      </td>
    </tr>
    <tr id="kt_jvm_test.srcs">
      <td><code>srcs</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>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.</p>
      </td>
    </tr>
    <tr id="kt_jvm_test.jvm_flags">
      <td><code>jvm_flags</code></td>
      <td>
        <p><code>List of strings; Optional; Default is []</code></p>
        <p>A list of flags to embed in the wrapper script generated for running this binary. Note: does not yet support make variable substitution.</p>
      </td>
    </tr>
    <tr id="kt_jvm_test.resource_jars">
      <td><code>resource_jars</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>Set of archives containing Java resources. If specified, the contents of these jars are merged into the output jar.</p>
      </td>
    </tr>
    <tr id="kt_jvm_test.resource_strip_prefix">
      <td><code>resource_strip_prefix</code></td>
      <td>
        <p><code>String; Optional; Default is ''</code></p>
        <p>The path prefix to strip from Java resources, files residing under common prefix such as <code>src/main/resources</code> or <code>src/test/resources</code>
will have stripping applied by convention.</p>
      </td>
    </tr>
    <tr id="kt_jvm_test.runtime_deps">
      <td><code>runtime_deps</code></td>
      <td>
        <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
        <p>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.</p>
      </td>
    </tr>
    <tr id="kt_jvm_test.test_class">
      <td><code>test_class</code></td>
      <td>
        <p><code>String; Optional; Default is ''</code></p>
        <p>The Java class to be loaded by the test runner.</p>
      </td>
    </tr>
  </tbody>
</table>


        </div>

        <footer class="mdl-mini-footer">
          <div class="mdl-mini-footer__left-section">
            <div class="mdl-logo">Bazel</div>
            <ul class="mdl-mini-footer__link-list">
              <li><a href="https://bazel.build">Home</a></li>
              <li><a href="https://github.com/bazelbuild">GitHub</a></li>
            </ul>
          </div>
        </footer>
      </main>
    </div>
  </body>
</html>
