

<!--
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#kotlin_binary">
        kotlin_binary
      </a>
    </li>
    <li>
      <a href="https://bazelbuild.github.io/rules_kotlin/kotlin/kotlin.html#kotlin_import">
        kotlin_import
      </a>
    </li>
    <li>
      <a href="https://bazelbuild.github.io/rules_kotlin/kotlin/kotlin.html#kotlin_library">
        kotlin_library
      </a>
    </li>
    <li>
      <a href="https://bazelbuild.github.io/rules_kotlin/kotlin/kotlin.html#kotlin_test">
        kotlin_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="#kotlin_binary">kotlin_binary</a></li>
    <li><a href="#kotlin_import">kotlin_import</a></li>
    <li><a href="#kotlin_library">kotlin_library</a></li>
    <li><a href="#kotlin_test">kotlin_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//:reflect</code>.</p>
<h3>Caveats</h3>
<ul>
<li>The compiler is currently not configurable <a href="https://github.com/hsyed/rules_kotlin/issues/3">issue</a>.</li>
<li>The compiler is hardwired to target jdk8 and language and api levels "1.2" <a href="https://github.com/hsyed/rules_kotlin/issues/3">issue</a>.</li>
</ul>

          <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="kotlin_binary">kotlin_binary</h2>

          <pre>kotlin_binary(<a href="#kotlin_binary.name">name</a>, <a href="#kotlin_binary.deps">deps</a>, <a href="#kotlin_binary.data">data</a>, <a href="#kotlin_binary.resources">resources</a>, <a href="#kotlin_binary.srcs">srcs</a>, <a href="#kotlin_binary.jvm_flags">jvm_flags</a>, <a href="#kotlin_binary.main_class">main_class</a>, <a href="#kotlin_binary.resource_jars">resource_jars</a>, <a href="#kotlin_binary.resource_strip_prefix">resource_strip_prefix</a>, <a href="#kotlin_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="kotlin_binary_args">Attributes</h3>

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="kotlin_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="kotlin_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="kotlin_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>
        
      </td>
    </tr>
    <tr id="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_import">kotlin_import</h2>

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

          <p>(experimental) Import Kotlin jars.</p>
<h2>examples</h2>
<pre><code class="lang-bzl"># Import a collection of class jars and source jars from filegroup labels.
kotlin_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.
kotlin_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="kotlin_import_args">Attributes</h3>

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="kotlin_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="kotlin_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="kotlin_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="kotlin_library">kotlin_library</h2>

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

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


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

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_test">kotlin_test</h2>

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

          <p>Setup a simple kotlin_test.</p>


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

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="kotlin_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="kotlin_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="kotlin_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>
        
      </td>
    </tr>
    <tr id="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_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="kotlin_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>
