| <html devsite> |
| <head> |
| <meta name="project_path" value="/_project.yaml"> |
| <meta name="book_path" value="/versions/7.5.0/_book.yaml"> |
| </head> |
| <body> |
| <!-- |
| This document is synchronized with Bazel releases. |
| To edit, submit changes to the Bazel source code. |
| --> |
| |
| <!-- Generated by //src/main/java/com/google/devtools/build/docgen:build-encyclopedia.zip --> |
| <html> |
| <body> |
| |
| <h1 class="page-title">Java Rules</h1> |
| |
| {% dynamic setvar source_file "src/main/java/com/google/devtools/build/docgen/templates/be/rules.vm" %} |
| {% dynamic setvar version "7.5.0" %} |
| {% dynamic setvar original_path "/reference/be/java" %} |
| {% include "_buttons.html" %} |
| |
| |
| |
| <h2>Rules</h2> |
| <ul> |
| <li> |
| <a href="#java_binary"> |
| java_binary </a> |
| </li> |
| <li> |
| <a href="#java_import"> |
| java_import </a> |
| </li> |
| <li> |
| <a href="#java_library"> |
| java_library </a> |
| </li> |
| <li> |
| <a href="#java_lite_proto_library"> |
| java_lite_proto_library </a> |
| </li> |
| <li> |
| <a href="#java_proto_library"> |
| java_proto_library </a> |
| </li> |
| <li> |
| <a href="#java_test"> |
| java_test </a> |
| </li> |
| <li> |
| <a href="#java_package_configuration"> |
| java_package_configuration </a> |
| </li> |
| <li> |
| <a href="#java_plugin"> |
| java_plugin </a> |
| </li> |
| <li> |
| <a href="#java_runtime"> |
| java_runtime </a> |
| </li> |
| <li> |
| <a href="#java_toolchain"> |
| java_toolchain </a> |
| </li> |
| </ul> |
| |
| <h2 id="java_binary"> |
| java_binary |
| </h2> |
| |
| <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaBinaryRule.java" target="_blank"> |
| View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span> |
| </a> |
| |
| <pre class="rule-signature">java_binary(<a href="#java_binary.name">name</a>, <a href="#java_binary.deps">deps</a>, <a href="#java_binary.srcs">srcs</a>, <a href="common-definitions.html#typical.data">data</a>, <a href="#java_binary.resources">resources</a>, <a href="common-definitions.html#binary.args">args</a>, <a href="#java_binary.classpath_resources">classpath_resources</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="#java_binary.create_executable">create_executable</a>, <a href="#java_binary.deploy_env">deploy_env</a>, <a href="#java_binary.deploy_manifest_lines">deploy_manifest_lines</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#binary.env">env</a>, <a href="common-definitions.html#common.exec_compatible_with">exec_compatible_with</a>, <a href="common-definitions.html#common.exec_properties">exec_properties</a>, <a href="common-definitions.html#common.features">features</a>, <a href="#java_binary.javacopts">javacopts</a>, <a href="#java_binary.jvm_flags">jvm_flags</a>, <a href="#java_binary.launcher">launcher</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="#java_binary.main_class">main_class</a>, <a href="common-definitions.html#binary.output_licenses">output_licenses</a>, <a href="#java_binary.plugins">plugins</a>, <a href="#java_binary.resource_jars">resource_jars</a>, <a href="#java_binary.resource_strip_prefix">resource_strip_prefix</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="#java_binary.runtime_deps">runtime_deps</a>, <a href="#java_binary.stamp">stamp</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="common-definitions.html#common.toolchains">toolchains</a>, <a href="#java_binary.use_launcher">use_launcher</a>, <a href="#java_binary.use_testrunner">use_testrunner</a>, <a href="common-definitions.html#common.visibility">visibility</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. When running the wrapper shell script, any nonempty |
| <code>JAVABIN</code> environment variable will take precedence over the version specified via |
| Bazel's <code>--java_runtime_version</code> flag. |
| </p> |
| <p> |
| The wrapper script accepts several unique flags. Refer to |
| <code>//src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt</code> |
| for a list of configurable flags and environment variables accepted by the wrapper. |
| </p> |
| |
| <h4 id="java_binary_implicit_outputs">Implicit output targets</h4> |
| <ul> |
| <li><code><var>name</var>.jar</code>: A Java archive, containing the class files and other |
| resources corresponding to the binary's direct dependencies.</li> |
| <li><code><var>name</var>-src.jar</code>: An archive containing the sources ("source |
| jar").</li> |
| <li><code><var>name</var>_deploy.jar</code>: A Java archive suitable for deployment (only |
| built if explicitly requested). |
| <p> |
| Building the <code><<var>name</var>>_deploy.jar</code> target for your rule |
| creates a self-contained jar file with a manifest that allows it to be run with the |
| <code>java -jar</code> command or with the wrapper script's <code>--singlejar</code> |
| option. Using the wrapper script is preferred to <code>java -jar</code> because it |
| also passes the <a href="/versions/7.5.0/reference/be/java.html#java_binary.jvm_flags">JVM flags</a> and the options |
| to load native libraries. |
| </p> |
| <p> |
| The deploy jar contains all the classes that would be found by a classloader that |
| searched the classpath from the binary's wrapper script from beginning to end. It also |
| contains the native libraries needed for dependencies. These are automatically loaded |
| into the JVM at runtime. |
| </p> |
| <p>If your target specifies a <a href="#java_binary.launcher">launcher</a> |
| attribute, then instead of being a normal JAR file, the _deploy.jar will be a |
| native binary. This will contain the launcher plus any native (C++) dependencies of |
| your rule, all linked into a static binary. The actual jar file's bytes will be |
| appended to that native binary, creating a single binary blob containing both the |
| executable and the Java code. You can execute the resulting jar file directly |
| like you would execute any native binary.</p> |
| </li> |
| <li><code><var>name</var>_deploy-src.jar</code>: An archive containing the sources |
| collected from the transitive closure of the target. These will match the classes in the |
| <code>deploy.jar</code> except where jars have no matching source jar.</li> |
| </ul> |
| |
| |
| <p> |
| A <code>deps</code> attribute is not allowed in a <code>java_binary</code> rule without |
| <a href="/versions/7.5.0/reference/be/java.html#java_binary.srcs"><code>srcs</code></a>; such a rule requires a |
| <a href="/versions/7.5.0/reference/be/java.html#java_binary.main_class"><code>main_class</code></a> provided by |
| <a href="/versions/7.5.0/reference/be/java.html#java_binary.runtime_deps"><code>runtime_deps</code></a>. |
| </p> |
| |
| <p>The following code snippet illustrates a common mistake:</p> |
| |
| <pre class="code"> |
| java_binary( |
| name = "DontDoThis", |
| srcs = [ |
| <var>...</var>, |
| <code class="deprecated">"GeneratedJavaFile.java"</code>, # a generated .java file |
| ], |
| deps = [<code class="deprecated">":generating_rule",</code>], # rule that generates that file |
| ) |
| </pre> |
| |
| <p>Do this instead:</p> |
| |
| <pre class="code"> |
| java_binary( |
| name = "DoThisInstead", |
| srcs = [ |
| <var>...</var>, |
| ":generating_rule", |
| ], |
| ) |
| </pre> |
| |
| |
| |
| <h3 id="java_binary_args">Arguments</h3> |
| <table class="table table-condensed table-bordered table-params"> |
| <colgroup> |
| <col class="col-param" /> |
| <col class="param-description" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="2">Attributes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td id="java_binary.name"><code>name</code></td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels#target-names">Name</a>; required</p> |
| <p>A unique name for this target.</p> |
| <br/>It is good practice to use the name of the source file that is the main entry point of the |
| application (minus the extension). For example, if your entry point is called |
| <code>Main.java</code>, then your name could be <code>Main</code>. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.deps"> |
| <code>deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of other libraries to be linked in to the target. |
| See general comments about <code>deps</code> at |
| <a href="common-definitions.html#typical-attributes">Typical attributes defined by |
| most build rules</a>. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.srcs"> |
| <code>srcs</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of source files that are processed to create the target. |
| This attribute is almost always required; see exceptions below. |
| <p> |
| Source files of type <code>.java</code> are compiled. In case of generated |
| <code>.java</code> files it is generally advisable to put the generating rule's name |
| here instead of the name of the file itself. This not only improves readability but |
| makes the rule more resilient to future changes: if the generating rule generates |
| different files in the future, you only need to fix one place: the <code>outs</code> of |
| the generating rule. You should not list the generating rule in <code>deps</code> |
| because it is a no-op. |
| </p> |
| <p> |
| Source files of type <code>.srcjar</code> are unpacked and compiled. (This is useful if |
| you need to generate a set of <code>.java</code> files with a genrule.) |
| </p> |
| <p> |
| Rules: if the rule (typically <code>genrule</code> or <code>filegroup</code>) generates |
| any of the files listed above, they will be used the same way as described for source |
| files. |
| </p> |
| |
| <p> |
| This argument is almost always required, except if a |
| <a href="#java_binary.main_class"><code>main_class</code></a> attribute specifies a |
| class on the runtime classpath or you specify the <code>runtime_deps</code> argument. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.resources"> |
| <code>resources</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| A list of data files to include in a Java jar. |
| <p> |
| If resources are specified, they will be bundled in the jar along with the usual |
| <code>.class</code> files produced by compilation. The location of the resources inside |
| of the jar file is determined by the project structure. Bazel first looks for Maven's |
| <a href="https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html">standard directory layout</a>, |
| (a "src" directory followed by a "resources" directory grandchild). If that is not |
| found, Bazel then looks for the topmost directory named "java" or "javatests" (so, for |
| example, if a resource is at <code><workspace root>/x/java/y/java/z</code>, the |
| path of the resource will be <code>y/java/z</code>. This heuristic cannot be overridden, |
| however, the <code>resource_strip_prefix</code> attribute can be used to specify a |
| specific alternative directory for resource files. |
| </p> |
| |
| <p> |
| Resources may be source files or generated files. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.classpath_resources"> |
| <code>classpath_resources</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| <em class="harmful">DO NOT USE THIS OPTION UNLESS THERE IS NO OTHER WAY)</em> |
| <p> |
| A list of resources that must be located at the root of the java tree. This attribute's |
| only purpose is to support third-party libraries that require that their resources be |
| found on the classpath as exactly <code>"myconfig.xml"</code>. It is only allowed on |
| binaries and not libraries, due to the danger of namespace conflicts. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.create_executable"> |
| <code>create_executable</code> |
| </td> |
| <td> |
| <p>Boolean; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a>; default is <code>True</code></p> |
| Deprecated, use <code>java_single_jar</code> instead. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.deploy_env"> |
| <code>deploy_env</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| A list of other <code>java_binary</code> targets which represent the deployment |
| environment for this binary. |
| Set this attribute when building a plugin which will be loaded by another |
| <code>java_binary</code>.<br/> Setting this attribute excludes all dependencies from |
| the runtime classpath (and the deploy jar) of this binary that are shared between this |
| binary and the targets specified in <code>deploy_env</code>. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.deploy_manifest_lines"> |
| <code>deploy_manifest_lines</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| A list of lines to add to the <code>META-INF/manifest.mf</code> file generated for the |
| <code>*_deploy.jar</code> target. The contents of this attribute are <em>not</em> subject |
| to <a href="make-variables.html">"Make variable"</a> substitution. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.javacopts"> |
| <code>javacopts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| Extra compiler options for this library. |
| Subject to <a href="make-variables.html">"Make variable"</a> substitution and |
| <a href="common-definitions.html#sh-tokenization">Bourne shell tokenization</a>. |
| <p>These compiler options are passed to javac after the global compiler options.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.jvm_flags"> |
| <code>jvm_flags</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| A list of flags to embed in the wrapper script generated for running this binary. |
| Subject to <a href="/versions/7.5.0/reference/be/make-variables#location">$(location)</a> and |
| <a href="make-variables.html">"Make variable"</a> substitution, and |
| <a href="common-definitions.html#sh-tokenization">Bourne shell tokenization</a>. |
| |
| <p>The wrapper script for a Java binary includes a CLASSPATH definition |
| (to find all the dependent jars) and invokes the right Java interpreter. |
| The command line generated by the wrapper script includes the name of |
| the main class followed by a <code>"$@"</code> so you can pass along other |
| arguments after the classname. However, arguments intended for parsing |
| by the JVM must be specified <i>before</i> the classname on the command |
| line. The contents of <code>jvm_flags</code> are added to the wrapper |
| script before the classname is listed.</p> |
| |
| <p>Note that this attribute has <em>no effect</em> on <code>*_deploy.jar</code> |
| outputs.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.launcher"> |
| <code>launcher</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| Specify a binary that will be used to run your Java program instead of the |
| normal <code>bin/java</code> program included with the JDK. |
| The target must be a <code>cc_binary</code>. Any <code>cc_binary</code> that |
| implements the |
| <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html"> |
| Java Invocation API</a> can be specified as a value for this attribute. |
| |
| <p>By default, Bazel will use the normal JDK launcher (bin/java or java.exe).</p> |
| |
| <p>The related <a href="/versions/7.5.0/docs/user-manual#flag--java_launcher"><code> |
| --java_launcher</code></a> Bazel flag affects only those |
| <code>java_binary</code> and <code>java_test</code> targets that have |
| <i>not</i> specified a <code>launcher</code> attribute.</p> |
| |
| <p>Note that your native (C++, SWIG, JNI) dependencies will be built differently |
| depending on whether you are using the JDK launcher or another launcher:</p> |
| |
| <ul> |
| <li>If you are using the normal JDK launcher (the default), native dependencies are |
| built as a shared library named <code>{name}_nativedeps.so</code>, where |
| <code>{name}</code> is the <code>name</code> attribute of this java_binary rule. |
| Unused code is <em>not</em> removed by the linker in this configuration.</li> |
| |
| <li>If you are using any other launcher, native (C++) dependencies are statically |
| linked into a binary named <code>{name}_nativedeps</code>, where <code>{name}</code> |
| is the <code>name</code> attribute of this java_binary rule. In this case, |
| the linker will remove any code it thinks is unused from the resulting binary, |
| which means any C++ code accessed only via JNI may not be linked in unless |
| that <code>cc_library</code> target specifies <code>alwayslink = 1</code>.</li> |
| </ul> |
| |
| <p>When using any launcher other than the default JDK launcher, the format |
| of the <code>*_deploy.jar</code> output changes. See the main |
| <a href="#java_binary">java_binary</a> docs for details.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.main_class"> |
| <code>main_class</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| Name of class with <code>main()</code> method to use as entry point. |
| If a rule uses this option, it does not need a <code>srcs=[...]</code> list. |
| Thus, with this attribute one can make an executable from a Java library that already |
| contains one or more <code>main()</code> methods. |
| <p> |
| The value of this attribute is a class name, not a source file. The class must be |
| available at runtime: it may be compiled by this rule (from <code>srcs</code>) or |
| provided by direct or transitive dependencies (through <code>runtime_deps</code> or |
| <code>deps</code>). If the class is unavailable, the binary will fail at runtime; there |
| is no build-time check. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.plugins"> |
| <code>plugins</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Java compiler plugins to run at compile-time. |
| Every <code>java_plugin</code> specified in this attribute will be run whenever this rule |
| is built. A library may also inherit plugins from dependencies that use |
| <code><a href="#java_library.exported_plugins">exported_plugins</a></code>. Resources |
| generated by the plugin will be included in the resulting jar of this rule. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.resource_jars"> |
| <code>resource_jars</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Deprecated: Use java_import and deps or runtime_deps instead. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.resource_strip_prefix"> |
| <code>resource_strip_prefix</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| The path prefix to strip from Java resources. |
| <p> |
| If specified, this path prefix is stripped from every file in the <code>resources</code> |
| attribute. It is an error for a resource file not to be under this directory. If not |
| specified (the default), the path of resource file is determined according to the same |
| logic as the Java package of source files. For example, a source file at |
| <code>stuff/java/foo/bar/a.txt</code> will be located at <code>foo/bar/a.txt</code>. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.runtime_deps"> |
| <code>runtime_deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Libraries to make available to the final binary or test at runtime only. |
| Like ordinary <code>deps</code>, these will appear on the runtime classpath, but unlike |
| them, not on the compile-time classpath. Dependencies needed only at runtime should be |
| listed here. Dependency-analysis tools should ignore targets that appear in both |
| <code>runtime_deps</code> and <code>deps</code>. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.stamp"> |
| <code>stamp</code> |
| </td> |
| <td> |
| <p>Integer; default is <code>-1</code></p> |
| Whether to encode build information into the binary. Possible values: |
| <ul> |
| <li> |
| <code>stamp = 1</code>: Always stamp the build information into the binary, even in |
| <a href="/versions/7.5.0/docs/user-manual#flag--stamp"><code>--nostamp</code></a> builds. <b>This |
| setting should be avoided</b>, since it potentially kills remote caching for the |
| binary and any downstream actions that depend on it. |
| </li> |
| <li> |
| <code>stamp = 0</code>: Always replace build information by constant values. This |
| gives good build result caching. |
| </li> |
| <li> |
| <code>stamp = -1</code>: Embedding of build information is controlled by the |
| <a href="/versions/7.5.0/docs/user-manual#flag--stamp"><code>--[no]stamp</code></a> flag. |
| </li> |
| </ul> |
| <p>Stamped binaries are <em>not</em> rebuilt unless their dependencies change.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.use_launcher"> |
| <code>use_launcher</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>True</code></p> |
| Whether the binary should use a custom launcher. |
| |
| <p>If this attribute is set to false, the |
| <a href="/versions/7.5.0/reference/be/java.html#java_binary.launcher">launcher</a> attribute and the related |
| <a href="/versions/7.5.0/docs/user-manual#flag--java_launcher"><code>--java_launcher</code></a> flag |
| will be ignored for this target. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_binary.use_testrunner"> |
| <code>use_testrunner</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>False</code></p> |
| Use the test runner (by default |
| <code>com.google.testing.junit.runner.BazelTestRunner</code>) class as the |
| main entry point for a Java program, and provide the test class |
| to the test runner as a value of <code>bazel.test_suite</code> |
| system property. |
| |
| You can use this to override the default |
| behavior, which is to use test runner for |
| <code>java_test</code> rules, |
| and not use it for <code>java_binary</code> rules. It is unlikely |
| you will want to do this. One use is for <code>AllTest</code> |
| rules that are invoked by another rule (to set up a database |
| before running the tests, for example). The <code>AllTest</code> |
| rule must be declared as a <code>java_binary</code>, but should |
| still use the test runner as its main entry point. |
| |
| The name of a test runner class can be overridden with <code>main_class</code> attribute. |
| |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <h2 id="java_import"> |
| java_import |
| </h2> |
| |
| <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaImportRule.java" target="_blank"> |
| View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span> |
| </a> |
| |
| <pre class="rule-signature">java_import(<a href="#java_import.name">name</a>, <a href="#java_import.deps">deps</a>, <a href="common-definitions.html#typical.data">data</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="#java_import.constraints">constraints</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.exec_compatible_with">exec_compatible_with</a>, <a href="common-definitions.html#common.exec_properties">exec_properties</a>, <a href="#java_import.exports">exports</a>, <a href="common-definitions.html#common.features">features</a>, <a href="#java_import.jars">jars</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="#java_import.neverlink">neverlink</a>, <a href="#java_import.proguard_specs">proguard_specs</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="#java_import.runtime_deps">runtime_deps</a>, <a href="#java_import.srcjar">srcjar</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre> |
| |
| |
| <p> |
| This rule allows the use of precompiled <code>.jar</code> files as |
| libraries for <code><a href="/versions/7.5.0/reference/be/java.html#java_library">java_library</a></code> and |
| <code><a href="/versions/7.5.0/reference/be/java.html#java_binary">java_binary</a></code> rules. |
| </p> |
| |
| <h4 id="java_import_examples">Examples</h4> |
| |
| <pre class="code"> |
| java_import( |
| name = "maven_model", |
| jars = [ |
| "maven_model/maven-aether-provider-3.2.3.jar", |
| "maven_model/maven-model-3.2.3.jar", |
| "maven_model/maven-model-builder-3.2.3.jar", |
| ], |
| ) |
| </pre> |
| |
| |
| |
| <h3 id="java_import_args">Arguments</h3> |
| <table class="table table-condensed table-bordered table-params"> |
| <colgroup> |
| <col class="col-param" /> |
| <col class="param-description" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="2">Attributes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td id="java_import.name"><code>name</code></td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels#target-names">Name</a>; required</p> |
| <p>A unique name for this target.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_import.deps"> |
| <code>deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of other libraries to be linked in to the target. |
| See <a href="/versions/7.5.0/reference/be/java.html#java_library.deps">java_library.deps</a>. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_import.constraints"> |
| <code>constraints</code> |
| </td> |
| <td> |
| <p>List of strings; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a>; default is <code>[]</code></p> |
| Extra constraints imposed on this rule as a Java library. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_import.exports"> |
| <code>exports</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Targets to make available to users of this rule. |
| See <a href="/versions/7.5.0/reference/be/java.html#java_library.exports">java_library.exports</a>. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_import.jars"> |
| <code>jars</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; required</p> |
| The list of JAR files provided to Java targets that depend on this target. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_import.neverlink"> |
| <code>neverlink</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>False</code></p> |
| Only use this library for compilation and not at runtime. |
| Useful if the library will be provided by the runtime environment |
| during execution. Examples of libraries like this are IDE APIs |
| for IDE plug-ins or <code>tools.jar</code> for anything running on |
| a standard JDK. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_import.proguard_specs"> |
| <code>proguard_specs</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Files to be used as Proguard specification. |
| These will describe the set of specifications to be used by Proguard. If specified, |
| they will be added to any <code>android_binary</code> target depending on this library. |
| |
| The files included here must only have idempotent rules, namely -dontnote, -dontwarn, |
| assumenosideeffects, and rules that start with -keep. Other options can only appear in |
| <code>android_binary</code>'s proguard_specs, to ensure non-tautological merges. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_import.runtime_deps"> |
| <code>runtime_deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Libraries to make available to the final binary or test at runtime only. |
| See <a href="/versions/7.5.0/reference/be/java.html#java_library.runtime_deps">java_library.runtime_deps</a>. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_import.srcjar"> |
| <code>srcjar</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| A JAR file that contains source code for the compiled JAR files. |
| |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <h2 id="java_library"> |
| java_library |
| </h2> |
| |
| <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaLibraryRule.java" target="_blank"> |
| View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span> |
| </a> |
| |
| <pre class="rule-signature">java_library(<a href="#java_library.name">name</a>, <a href="#java_library.deps">deps</a>, <a href="#java_library.srcs">srcs</a>, <a href="#java_library.data">data</a>, <a href="#java_library.resources">resources</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.exec_compatible_with">exec_compatible_with</a>, <a href="common-definitions.html#common.exec_properties">exec_properties</a>, <a href="#java_library.exported_plugins">exported_plugins</a>, <a href="#java_library.exports">exports</a>, <a href="common-definitions.html#common.features">features</a>, <a href="#java_library.javacopts">javacopts</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="#java_library.neverlink">neverlink</a>, <a href="#java_library.plugins">plugins</a>, <a href="#java_library.proguard_specs">proguard_specs</a>, <a href="#java_library.resource_jars">resource_jars</a>, <a href="#java_library.resource_strip_prefix">resource_strip_prefix</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="#java_library.runtime_deps">runtime_deps</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre> |
| |
| |
| <p>This rule compiles and links sources into a <code>.jar</code> file.</p> |
| |
| <h4 id="java_library_implicit_outputs">Implicit output targets</h4> |
| <ul> |
| <li><code>lib<var>name</var>.jar</code>: A Java archive containing the class files.</li> |
| <li><code>lib<var>name</var>-src.jar</code>: An archive containing the sources ("source |
| jar").</li> |
| </ul> |
| |
| |
| |
| |
| <h3 id="java_library_args">Arguments</h3> |
| <table class="table table-condensed table-bordered table-params"> |
| <colgroup> |
| <col class="col-param" /> |
| <col class="param-description" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="2">Attributes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td id="java_library.name"><code>name</code></td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels#target-names">Name</a>; required</p> |
| <p>A unique name for this target.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.deps"> |
| <code>deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of libraries to link into this library. |
| See general comments about <code>deps</code> at |
| <a href="/versions/7.5.0/reference/be/common-definitions#typical-attributes">Typical attributes defined by |
| most build rules</a>. |
| <p> |
| The jars built by <code>java_library</code> rules listed in <code>deps</code> will be on |
| the compile-time classpath of this rule. Furthermore the transitive closure of their |
| <code>deps</code>, <code>runtime_deps</code> and <code>exports</code> will be on the |
| runtime classpath. |
| </p> |
| <p> |
| By contrast, targets in the <code>data</code> attribute are included in the runfiles but |
| on neither the compile-time nor runtime classpath. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.srcs"> |
| <code>srcs</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of source files that are processed to create the target. |
| This attribute is almost always required; see exceptions below. |
| <p> |
| Source files of type <code>.java</code> are compiled. In case of generated |
| <code>.java</code> files it is generally advisable to put the generating rule's name |
| here instead of the name of the file itself. This not only improves readability but |
| makes the rule more resilient to future changes: if the generating rule generates |
| different files in the future, you only need to fix one place: the <code>outs</code> of |
| the generating rule. You should not list the generating rule in <code>deps</code> |
| because it is a no-op. |
| </p> |
| <p> |
| Source files of type <code>.srcjar</code> are unpacked and compiled. (This is useful if |
| you need to generate a set of <code>.java</code> files with a genrule.) |
| </p> |
| <p> |
| Rules: if the rule (typically <code>genrule</code> or <code>filegroup</code>) generates |
| any of the files listed above, they will be used the same way as described for source |
| files. |
| </p> |
| |
| <p> |
| This argument is almost always required, except if a |
| <a href="#java_binary.main_class"><code>main_class</code></a> attribute specifies a |
| class on the runtime classpath or you specify the <code>runtime_deps</code> argument. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.data"> |
| <code>data</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of files needed by this library at runtime. |
| See general comments about <code>data</code> at |
| <a href="/versions/7.5.0/reference/be/common-definitions#typical-attributes">Typical attributes defined by |
| most build rules</a>. |
| <p> |
| When building a <code>java_library</code>, Bazel doesn't put these files anywhere; if the |
| <code>data</code> files are generated files then Bazel generates them. When building a |
| test that depends on this <code>java_library</code> Bazel copies or links the |
| <code>data</code> files into the runfiles area. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.resources"> |
| <code>resources</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| A list of data files to include in a Java jar. |
| <p> |
| If resources are specified, they will be bundled in the jar along with the usual |
| <code>.class</code> files produced by compilation. The location of the resources inside |
| of the jar file is determined by the project structure. Bazel first looks for Maven's |
| <a href="https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html">standard directory layout</a>, |
| (a "src" directory followed by a "resources" directory grandchild). If that is not |
| found, Bazel then looks for the topmost directory named "java" or "javatests" (so, for |
| example, if a resource is at <code><workspace root>/x/java/y/java/z</code>, the |
| path of the resource will be <code>y/java/z</code>. This heuristic cannot be overridden, |
| however, the <code>resource_strip_prefix</code> attribute can be used to specify a |
| specific alternative directory for resource files. |
| </p> |
| |
| <p> |
| Resources may be source files or generated files. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.exported_plugins"> |
| <code>exported_plugins</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of <code><a href="#/reference/be/java.html#java_plugin">java_plugin</a></code>s (e.g. annotation |
| processors) to export to libraries that directly depend on this library. |
| <p> |
| The specified list of <code>java_plugin</code>s will be applied to any library which |
| directly depends on this library, just as if that library had explicitly declared these |
| labels in <code><a href="/versions/7.5.0/reference/be/java.html#java_library.plugins">plugins</a></code>. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.exports"> |
| <code>exports</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Exported libraries. |
| <p> |
| Listing rules here will make them available to parent rules, as if the parents explicitly |
| depended on these rules. This is not true for regular (non-exported) <code>deps</code>. |
| </p> |
| <p> |
| Summary: a rule <i>X</i> can access the code in <i>Y</i> if there exists a dependency |
| path between them that begins with a <code>deps</code> edge followed by zero or more |
| <code>exports</code> edges. Let's see some examples to illustrate this. |
| </p> |
| <p> |
| Assume <i>A</i> depends on <i>B</i> and <i>B</i> depends on <i>C</i>. In this case |
| C is a <em>transitive</em> dependency of A, so changing C's sources and rebuilding A will |
| correctly rebuild everything. However A will not be able to use classes in C. To allow |
| that, either A has to declare C in its <code>deps</code>, or B can make it easier for A |
| (and anything that may depend on A) by declaring C in its (B's) <code>exports</code> |
| attribute. |
| </p> |
| <p> |
| The closure of exported libraries is available to all direct parent rules. Take a slightly |
| different example: A depends on B, B depends on C and D, and also exports C but not D. |
| Now A has access to C but not to D. Now, if C and D exported some libraries, C' and D' |
| respectively, A could only access C' but not D'. |
| </p> |
| <p> |
| Important: an exported rule is not a regular dependency. Sticking to the previous example, |
| if B exports C and wants to also use C, it has to also list it in its own |
| <code>deps</code>. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.javacopts"> |
| <code>javacopts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| Extra compiler options for this library. |
| Subject to <a href="make-variables.html">"Make variable"</a> substitution and |
| <a href="common-definitions.html#sh-tokenization">Bourne shell tokenization</a>. |
| <p>These compiler options are passed to javac after the global compiler options.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.neverlink"> |
| <code>neverlink</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>False</code></p> |
| Whether this library should only be used for compilation and not at runtime. |
| Useful if the library will be provided by the runtime environment during execution. Examples |
| of such libraries are the IDE APIs for IDE plug-ins or <code>tools.jar</code> for anything |
| running on a standard JDK. |
| <p> |
| Note that <code>neverlink = 1</code> does not prevent the compiler from inlining material |
| from this library into compilation targets that depend on it, as permitted by the Java |
| Language Specification (e.g., <code>static final</code> constants of <code>String</code> |
| or of primitive types). The preferred use case is therefore when the runtime library is |
| identical to the compilation library. |
| </p> |
| <p> |
| If the runtime library differs from the compilation library then you must ensure that it |
| differs only in places that the JLS forbids compilers to inline (and that must hold for |
| all future versions of the JLS). |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.plugins"> |
| <code>plugins</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Java compiler plugins to run at compile-time. |
| Every <code>java_plugin</code> specified in this attribute will be run whenever this rule |
| is built. A library may also inherit plugins from dependencies that use |
| <code><a href="#java_library.exported_plugins">exported_plugins</a></code>. Resources |
| generated by the plugin will be included in the resulting jar of this rule. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.proguard_specs"> |
| <code>proguard_specs</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Files to be used as Proguard specification. |
| These will describe the set of specifications to be used by Proguard. If specified, |
| they will be added to any <code>android_binary</code> target depending on this library. |
| |
| The files included here must only have idempotent rules, namely -dontnote, -dontwarn, |
| assumenosideeffects, and rules that start with -keep. Other options can only appear in |
| <code>android_binary</code>'s proguard_specs, to ensure non-tautological merges. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.resource_jars"> |
| <code>resource_jars</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Deprecated: Use java_import and deps or runtime_deps instead. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.resource_strip_prefix"> |
| <code>resource_strip_prefix</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| The path prefix to strip from Java resources. |
| <p> |
| If specified, this path prefix is stripped from every file in the <code>resources</code> |
| attribute. It is an error for a resource file not to be under this directory. If not |
| specified (the default), the path of resource file is determined according to the same |
| logic as the Java package of source files. For example, a source file at |
| <code>stuff/java/foo/bar/a.txt</code> will be located at <code>foo/bar/a.txt</code>. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_library.runtime_deps"> |
| <code>runtime_deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Libraries to make available to the final binary or test at runtime only. |
| Like ordinary <code>deps</code>, these will appear on the runtime classpath, but unlike |
| them, not on the compile-time classpath. Dependencies needed only at runtime should be |
| listed here. Dependency-analysis tools should ignore targets that appear in both |
| <code>runtime_deps</code> and <code>deps</code>. |
| |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <h2 id="java_lite_proto_library"> |
| java_lite_proto_library |
| </h2> |
| |
| <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/bazel/rules/java/proto/BazelJavaLiteProtoLibraryRule.java" target="_blank"> |
| View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span> |
| </a> |
| |
| <pre class="rule-signature">java_lite_proto_library(<a href="#java_lite_proto_library.name">name</a>, <a href="#java_lite_proto_library.deps">deps</a>, <a href="common-definitions.html#typical.data">data</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.exec_compatible_with">exec_compatible_with</a>, <a href="common-definitions.html#common.exec_properties">exec_properties</a>, <a href="common-definitions.html#common.features">features</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre> |
| |
| |
| <p> |
| <code>java_lite_proto_library</code> generates Java code from <code>.proto</code> files. |
| </p> |
| |
| <p> |
| <code>deps</code> must point to <a href="protocol-buffer.html#proto_library"><code>proto_library |
| </code></a> rules. |
| </p> |
| |
| <p> |
| Example: |
| </p> |
| |
| <pre class="code"> |
| java_library( |
| name = "lib", |
| deps = [":foo"], |
| ) |
| |
| java_lite_proto_library( |
| name = "foo", |
| deps = [":bar"], |
| ) |
| |
| proto_library( |
| name = "bar", |
| ) |
| </pre> |
| |
| |
| |
| |
| <h3 id="java_lite_proto_library_args">Arguments</h3> |
| <table class="table table-condensed table-bordered table-params"> |
| <colgroup> |
| <col class="col-param" /> |
| <col class="param-description" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="2">Attributes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td id="java_lite_proto_library.name"><code>name</code></td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels#target-names">Name</a>; required</p> |
| <p>A unique name for this target.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_lite_proto_library.deps"> |
| <code>deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of <a href="protocol-buffer.html#proto_library"><code>proto_library</code></a> |
| rules to generate Java code for. |
| |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <h2 id="java_proto_library"> |
| java_proto_library |
| </h2> |
| |
| <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/bazel/rules/java/proto/BazelJavaProtoLibraryRule.java" target="_blank"> |
| View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span> |
| </a> |
| |
| <pre class="rule-signature">java_proto_library(<a href="#java_proto_library.name">name</a>, <a href="#java_proto_library.deps">deps</a>, <a href="common-definitions.html#typical.data">data</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.exec_compatible_with">exec_compatible_with</a>, <a href="common-definitions.html#common.exec_properties">exec_properties</a>, <a href="common-definitions.html#common.features">features</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre> |
| |
| |
| <p> |
| <code>java_proto_library</code> generates Java code from <code>.proto</code> files. |
| </p> |
| |
| <p> |
| <code>deps</code> must point to <a href="protocol-buffer.html#proto_library"><code>proto_library |
| </code></a> rules. |
| </p> |
| |
| <p> |
| Example: |
| </p> |
| |
| <pre class="code"> |
| java_library( |
| name = "lib", |
| deps = [":foo_java_proto"], |
| ) |
| |
| java_proto_library( |
| name = "foo_java_proto", |
| deps = [":foo_proto"], |
| ) |
| |
| proto_library( |
| name = "foo_proto", |
| ) |
| </pre> |
| |
| |
| |
| |
| <h3 id="java_proto_library_args">Arguments</h3> |
| <table class="table table-condensed table-bordered table-params"> |
| <colgroup> |
| <col class="col-param" /> |
| <col class="param-description" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="2">Attributes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td id="java_proto_library.name"><code>name</code></td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels#target-names">Name</a>; required</p> |
| <p>A unique name for this target.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_proto_library.deps"> |
| <code>deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of <a href="protocol-buffer.html#proto_library"><code>proto_library</code></a> |
| rules to generate Java code for. |
| |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <h2 id="java_test"> |
| java_test |
| </h2> |
| |
| <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaTestRule.java" target="_blank"> |
| View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span> |
| </a> |
| |
| <pre class="rule-signature">java_test(<a href="#java_test.name">name</a>, <a href="#java_test.deps">deps</a>, <a href="#java_test.srcs">srcs</a>, <a href="common-definitions.html#typical.data">data</a>, <a href="#java_test.resources">resources</a>, <a href="common-definitions.html#test.args">args</a>, <a href="#java_test.classpath_resources">classpath_resources</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="#java_test.create_executable">create_executable</a>, <a href="#java_test.deploy_manifest_lines">deploy_manifest_lines</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#test.env">env</a>, <a href="common-definitions.html#test.env_inherit">env_inherit</a>, <a href="common-definitions.html#common.exec_compatible_with">exec_compatible_with</a>, <a href="common-definitions.html#common.exec_properties">exec_properties</a>, <a href="common-definitions.html#common.features">features</a>, <a href="common-definitions.html#test.flaky">flaky</a>, <a href="#java_test.javacopts">javacopts</a>, <a href="#java_test.jvm_flags">jvm_flags</a>, <a href="#java_test.launcher">launcher</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="common-definitions.html#test.local">local</a>, <a href="#java_test.main_class">main_class</a>, <a href="#java_test.plugins">plugins</a>, <a href="#java_test.resource_jars">resource_jars</a>, <a href="#java_test.resource_strip_prefix">resource_strip_prefix</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="#java_test.runtime_deps">runtime_deps</a>, <a href="common-definitions.html#test.shard_count">shard_count</a>, <a href="common-definitions.html#test.size">size</a>, <a href="#java_test.stamp">stamp</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="#java_test.test_class">test_class</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="common-definitions.html#test.timeout">timeout</a>, <a href="common-definitions.html#common.toolchains">toolchains</a>, <a href="#java_test.use_launcher">use_launcher</a>, <a href="#java_test.use_testrunner">use_testrunner</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre> |
| |
| |
| <p> |
| A <code>java_test()</code> rule compiles a Java test. A test is a binary wrapper around your |
| test code. The test runner's main method is invoked instead of the main class being compiled. |
| </p> |
| |
| <h4 id="java_test_implicit_outputs">Implicit output targets</h4> |
| <ul> |
| <li><code><var>name</var>.jar</code>: A Java archive.</li> |
| <li><code><var>name</var>_deploy.jar</code>: A Java archive suitable |
| for deployment. (Only built if explicitly requested.) See the description of the |
| <code><var>name</var>_deploy.jar</code> output from |
| <a href="#java_binary">java_binary</a> for more details.</li> |
| </ul> |
| |
| |
| <p> |
| See the section on <a href="/versions/7.5.0/reference/be/java.html#java_binary_args">java_binary()</a> arguments. This rule also |
| supports all <a href="/versions/7.5.0/reference/be/common-definitions#common-attributes-tests">attributes common |
| to all test rules (*_test)</a>. |
| </p> |
| |
| <h4 id="java_test_examples">Examples</h4> |
| |
| <pre class="code"> |
| java_library( |
| name = "tests", |
| srcs = glob(["*.java"]), |
| deps = [ |
| "//java/com/foo/base:testResources", |
| "//java/com/foo/testing/util", |
| ], |
| ) |
| |
| java_test( |
| name = "AllTests", |
| size = "small", |
| runtime_deps = [ |
| ":tests", |
| "//util/mysql", |
| ], |
| ) |
| </pre> |
| |
| |
| |
| <h3 id="java_test_args">Arguments</h3> |
| <table class="table table-condensed table-bordered table-params"> |
| <colgroup> |
| <col class="col-param" /> |
| <col class="param-description" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="2">Attributes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td id="java_test.name"><code>name</code></td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels#target-names">Name</a>; required</p> |
| <p>A unique name for this target.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.deps"> |
| <code>deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of other libraries to be linked in to the target. |
| See general comments about <code>deps</code> at |
| <a href="common-definitions.html#typical-attributes">Typical attributes defined by |
| most build rules</a>. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.srcs"> |
| <code>srcs</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of source files that are processed to create the target. |
| This attribute is almost always required; see exceptions below. |
| <p> |
| Source files of type <code>.java</code> are compiled. In case of generated |
| <code>.java</code> files it is generally advisable to put the generating rule's name |
| here instead of the name of the file itself. This not only improves readability but |
| makes the rule more resilient to future changes: if the generating rule generates |
| different files in the future, you only need to fix one place: the <code>outs</code> of |
| the generating rule. You should not list the generating rule in <code>deps</code> |
| because it is a no-op. |
| </p> |
| <p> |
| Source files of type <code>.srcjar</code> are unpacked and compiled. (This is useful if |
| you need to generate a set of <code>.java</code> files with a genrule.) |
| </p> |
| <p> |
| Rules: if the rule (typically <code>genrule</code> or <code>filegroup</code>) generates |
| any of the files listed above, they will be used the same way as described for source |
| files. |
| </p> |
| |
| <p> |
| This argument is almost always required, except if a |
| <a href="#java_binary.main_class"><code>main_class</code></a> attribute specifies a |
| class on the runtime classpath or you specify the <code>runtime_deps</code> argument. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.resources"> |
| <code>resources</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| A list of data files to include in a Java jar. |
| <p> |
| If resources are specified, they will be bundled in the jar along with the usual |
| <code>.class</code> files produced by compilation. The location of the resources inside |
| of the jar file is determined by the project structure. Bazel first looks for Maven's |
| <a href="https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html">standard directory layout</a>, |
| (a "src" directory followed by a "resources" directory grandchild). If that is not |
| found, Bazel then looks for the topmost directory named "java" or "javatests" (so, for |
| example, if a resource is at <code><workspace root>/x/java/y/java/z</code>, the |
| path of the resource will be <code>y/java/z</code>. This heuristic cannot be overridden, |
| however, the <code>resource_strip_prefix</code> attribute can be used to specify a |
| specific alternative directory for resource files. |
| </p> |
| |
| <p> |
| Resources may be source files or generated files. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.classpath_resources"> |
| <code>classpath_resources</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| <em class="harmful">DO NOT USE THIS OPTION UNLESS THERE IS NO OTHER WAY)</em> |
| <p> |
| A list of resources that must be located at the root of the java tree. This attribute's |
| only purpose is to support third-party libraries that require that their resources be |
| found on the classpath as exactly <code>"myconfig.xml"</code>. It is only allowed on |
| binaries and not libraries, due to the danger of namespace conflicts. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.create_executable"> |
| <code>create_executable</code> |
| </td> |
| <td> |
| <p>Boolean; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a>; default is <code>True</code></p> |
| Deprecated, use <code>java_single_jar</code> instead. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.deploy_manifest_lines"> |
| <code>deploy_manifest_lines</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| A list of lines to add to the <code>META-INF/manifest.mf</code> file generated for the |
| <code>*_deploy.jar</code> target. The contents of this attribute are <em>not</em> subject |
| to <a href="make-variables.html">"Make variable"</a> substitution. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.javacopts"> |
| <code>javacopts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| Extra compiler options for this library. |
| Subject to <a href="make-variables.html">"Make variable"</a> substitution and |
| <a href="common-definitions.html#sh-tokenization">Bourne shell tokenization</a>. |
| <p>These compiler options are passed to javac after the global compiler options.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.jvm_flags"> |
| <code>jvm_flags</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| A list of flags to embed in the wrapper script generated for running this binary. |
| Subject to <a href="/versions/7.5.0/reference/be/make-variables#location">$(location)</a> and |
| <a href="make-variables.html">"Make variable"</a> substitution, and |
| <a href="common-definitions.html#sh-tokenization">Bourne shell tokenization</a>. |
| |
| <p>The wrapper script for a Java binary includes a CLASSPATH definition |
| (to find all the dependent jars) and invokes the right Java interpreter. |
| The command line generated by the wrapper script includes the name of |
| the main class followed by a <code>"$@"</code> so you can pass along other |
| arguments after the classname. However, arguments intended for parsing |
| by the JVM must be specified <i>before</i> the classname on the command |
| line. The contents of <code>jvm_flags</code> are added to the wrapper |
| script before the classname is listed.</p> |
| |
| <p>Note that this attribute has <em>no effect</em> on <code>*_deploy.jar</code> |
| outputs.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.launcher"> |
| <code>launcher</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| Specify a binary that will be used to run your Java program instead of the |
| normal <code>bin/java</code> program included with the JDK. |
| The target must be a <code>cc_binary</code>. Any <code>cc_binary</code> that |
| implements the |
| <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html"> |
| Java Invocation API</a> can be specified as a value for this attribute. |
| |
| <p>By default, Bazel will use the normal JDK launcher (bin/java or java.exe).</p> |
| |
| <p>The related <a href="/versions/7.5.0/docs/user-manual#flag--java_launcher"><code> |
| --java_launcher</code></a> Bazel flag affects only those |
| <code>java_binary</code> and <code>java_test</code> targets that have |
| <i>not</i> specified a <code>launcher</code> attribute.</p> |
| |
| <p>Note that your native (C++, SWIG, JNI) dependencies will be built differently |
| depending on whether you are using the JDK launcher or another launcher:</p> |
| |
| <ul> |
| <li>If you are using the normal JDK launcher (the default), native dependencies are |
| built as a shared library named <code>{name}_nativedeps.so</code>, where |
| <code>{name}</code> is the <code>name</code> attribute of this java_binary rule. |
| Unused code is <em>not</em> removed by the linker in this configuration.</li> |
| |
| <li>If you are using any other launcher, native (C++) dependencies are statically |
| linked into a binary named <code>{name}_nativedeps</code>, where <code>{name}</code> |
| is the <code>name</code> attribute of this java_binary rule. In this case, |
| the linker will remove any code it thinks is unused from the resulting binary, |
| which means any C++ code accessed only via JNI may not be linked in unless |
| that <code>cc_library</code> target specifies <code>alwayslink = 1</code>.</li> |
| </ul> |
| |
| <p>When using any launcher other than the default JDK launcher, the format |
| of the <code>*_deploy.jar</code> output changes. See the main |
| <a href="#java_binary">java_binary</a> docs for details.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.main_class"> |
| <code>main_class</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| Name of class with <code>main()</code> method to use as entry point. |
| If a rule uses this option, it does not need a <code>srcs=[...]</code> list. |
| Thus, with this attribute one can make an executable from a Java library that already |
| contains one or more <code>main()</code> methods. |
| <p> |
| The value of this attribute is a class name, not a source file. The class must be |
| available at runtime: it may be compiled by this rule (from <code>srcs</code>) or |
| provided by direct or transitive dependencies (through <code>runtime_deps</code> or |
| <code>deps</code>). If the class is unavailable, the binary will fail at runtime; there |
| is no build-time check. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.plugins"> |
| <code>plugins</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Java compiler plugins to run at compile-time. |
| Every <code>java_plugin</code> specified in this attribute will be run whenever this rule |
| is built. A library may also inherit plugins from dependencies that use |
| <code><a href="#java_library.exported_plugins">exported_plugins</a></code>. Resources |
| generated by the plugin will be included in the resulting jar of this rule. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.resource_jars"> |
| <code>resource_jars</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Deprecated: Use java_import and deps or runtime_deps instead. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.resource_strip_prefix"> |
| <code>resource_strip_prefix</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| The path prefix to strip from Java resources. |
| <p> |
| If specified, this path prefix is stripped from every file in the <code>resources</code> |
| attribute. It is an error for a resource file not to be under this directory. If not |
| specified (the default), the path of resource file is determined according to the same |
| logic as the Java package of source files. For example, a source file at |
| <code>stuff/java/foo/bar/a.txt</code> will be located at <code>foo/bar/a.txt</code>. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.runtime_deps"> |
| <code>runtime_deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Libraries to make available to the final binary or test at runtime only. |
| Like ordinary <code>deps</code>, these will appear on the runtime classpath, but unlike |
| them, not on the compile-time classpath. Dependencies needed only at runtime should be |
| listed here. Dependency-analysis tools should ignore targets that appear in both |
| <code>runtime_deps</code> and <code>deps</code>. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.stamp"> |
| <code>stamp</code> |
| </td> |
| <td> |
| <p>Integer; default is <code>0</code></p> |
| Whether to encode build information into the binary. Possible values: |
| <ul> |
| <li> |
| <code>stamp = 1</code>: Always stamp the build information into the binary, even in |
| <a href="/versions/7.5.0/docs/user-manual#flag--stamp"><code>--nostamp</code></a> builds. <b>This |
| setting should be avoided</b>, since it potentially kills remote caching for the |
| binary and any downstream actions that depend on it. |
| </li> |
| <li> |
| <code>stamp = 0</code>: Always replace build information by constant values. This |
| gives good build result caching. |
| </li> |
| <li> |
| <code>stamp = -1</code>: Embedding of build information is controlled by the |
| <a href="/versions/7.5.0/docs/user-manual#flag--stamp"><code>--[no]stamp</code></a> flag. |
| </li> |
| </ul> |
| <p>Stamped binaries are <em>not</em> rebuilt unless their dependencies change.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.test_class"> |
| <code>test_class</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| The Java class to be loaded by the test runner.<br/> |
| <p> |
| By default, if this argument is not defined then the legacy mode is used and the |
| test arguments are used instead. Set the <code>--nolegacy_bazel_java_test</code> flag |
| to not fallback on the first argument. |
| </p> |
| <p> |
| This attribute specifies the name of a Java class to be run by |
| this test. It is rare to need to set this. If this argument is omitted, |
| it will be inferred using the target's <code>name</code> and its |
| source-root-relative path. If the test is located outside a known |
| source root, Bazel will report an error if <code>test_class</code> |
| is unset. |
| </p> |
| <p> |
| For JUnit3, the test class needs to either be a subclass of |
| <code>junit.framework.TestCase</code> or it needs to have a public |
| static <code>suite()</code> method that returns a |
| <code>junit.framework.Test</code> (or a subclass of <code>Test</code>). |
| For JUnit4, the class needs to be annotated with |
| <code>org.junit.runner.RunWith</code>. |
| </p> |
| <p> |
| This attribute allows several <code>java_test</code> rules to |
| share the same <code>Test</code> |
| (<code>TestCase</code>, <code>TestSuite</code>, ...). Typically |
| additional information is passed to it |
| (e.g. via <code>jvm_flags=['-Dkey=value']</code>) so that its |
| behavior differs in each case, such as running a different |
| subset of the tests. This attribute also enables the use of |
| Java tests outside the <code>javatests</code> tree. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.use_launcher"> |
| <code>use_launcher</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>True</code></p> |
| Whether the binary should use a custom launcher. |
| |
| <p>If this attribute is set to false, the |
| <a href="/versions/7.5.0/reference/be/java.html#java_binary.launcher">launcher</a> attribute and the related |
| <a href="/versions/7.5.0/docs/user-manual#flag--java_launcher"><code>--java_launcher</code></a> flag |
| will be ignored for this target. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_test.use_testrunner"> |
| <code>use_testrunner</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>True</code></p> |
| Use the test runner (by default |
| <code>com.google.testing.junit.runner.BazelTestRunner</code>) class as the |
| main entry point for a Java program, and provide the test class |
| to the test runner as a value of <code>bazel.test_suite</code> |
| system property. |
| |
| You can use this to override the default |
| behavior, which is to use test runner for |
| <code>java_test</code> rules, |
| and not use it for <code>java_binary</code> rules. It is unlikely |
| you will want to do this. One use is for <code>AllTest</code> |
| rules that are invoked by another rule (to set up a database |
| before running the tests, for example). The <code>AllTest</code> |
| rule must be declared as a <code>java_binary</code>, but should |
| still use the test runner as its main entry point. |
| |
| The name of a test runner class can be overridden with <code>main_class</code> attribute. |
| |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <h2 id="java_package_configuration"> |
| java_package_configuration |
| </h2> |
| |
| <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/rules/java/JavaPackageConfigurationRule.java" target="_blank"> |
| View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span> |
| </a> |
| |
| <pre class="rule-signature">java_package_configuration(<a href="#java_package_configuration.name">name</a>, <a href="#java_package_configuration.data">data</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.features">features</a>, <a href="#java_package_configuration.javacopts">javacopts</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="#java_package_configuration.packages">packages</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre> |
| |
| |
| <p> |
| Configuration to apply to a set of packages. |
| Configurations can be added to |
| <code><a href="/versions/7.5.0/reference/be/java.html#java_toolchain.javacopts">java_toolchain.javacopts</a></code>s. |
| </p> |
| |
| <h4 id="java_package_configuration_example">Example:</h4> |
| |
| <pre class="code"> |
| java_package_configuration( |
| name = "my_configuration", |
| packages = [":my_packages"], |
| javacopts = ["-Werror"], |
| ) |
| |
| package_group( |
| name = "my_packages", |
| packages = [ |
| "//com/my/project/...", |
| "-//com/my/project/testing/...", |
| ], |
| ) |
| |
| java_toolchain( |
| ..., |
| package_configuration = [ |
| ":my_configuration", |
| ] |
| ) |
| </pre> |
| |
| |
| |
| <h3 id="java_package_configuration_args">Arguments</h3> |
| <table class="table table-condensed table-bordered table-params"> |
| <colgroup> |
| <col class="col-param" /> |
| <col class="param-description" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="2">Attributes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td id="java_package_configuration.name"><code>name</code></td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels#target-names">Name</a>; required</p> |
| <p>A unique name for this target.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_package_configuration.data"> |
| <code>data</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of files needed by this configuration at runtime. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_package_configuration.javacopts"> |
| <code>javacopts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| Java compiler flags. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_package_configuration.packages"> |
| <code>packages</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The set of <code><a href="/versions/7.5.0/reference/be/functions.html#package_group">package_group</a></code>s |
| the configuration should be applied to. |
| |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <h2 id="java_plugin"> |
| java_plugin |
| </h2> |
| |
| <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaPluginRule.java" target="_blank"> |
| View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span> |
| </a> |
| |
| <pre class="rule-signature">java_plugin(<a href="#java_plugin.name">name</a>, <a href="#java_plugin.deps">deps</a>, <a href="#java_plugin.srcs">srcs</a>, <a href="#java_plugin.data">data</a>, <a href="#java_plugin.resources">resources</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.exec_compatible_with">exec_compatible_with</a>, <a href="common-definitions.html#common.exec_properties">exec_properties</a>, <a href="common-definitions.html#common.features">features</a>, <a href="#java_plugin.generates_api">generates_api</a>, <a href="#java_plugin.javacopts">javacopts</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="#java_plugin.neverlink">neverlink</a>, <a href="#java_plugin.output_licenses">output_licenses</a>, <a href="#java_plugin.plugins">plugins</a>, <a href="#java_plugin.processor_class">processor_class</a>, <a href="#java_plugin.proguard_specs">proguard_specs</a>, <a href="#java_plugin.resource_jars">resource_jars</a>, <a href="#java_plugin.resource_strip_prefix">resource_strip_prefix</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre> |
| |
| |
| <p> |
| <code>java_plugin</code> defines plugins for the Java compiler run by Bazel. At the moment, the |
| only supported kind of plugins are annotation processors. A <code>java_library</code> or |
| <code>java_binary</code> rule can run plugins by depending on them via the <code>plugins</code> |
| attribute. A <code>java_library</code> can also automatically export plugins to libraries that |
| directly depend on it using |
| <code><a href="/versions/7.5.0/reference/be/java.html#java_library.exported_plugins">exported_plugins</a></code>. |
| </p> |
| |
| <h4 id="java_plugin_implicit_outputs">Implicit output targets</h4> |
| <ul> |
| <li><code><var>libname</var>.jar</code>: A Java archive.</li> |
| </ul> |
| |
| |
| <p> |
| Arguments are identical to <a href="/versions/7.5.0/reference/be/java.html#java_library"><code>java_library</code></a>, except |
| for the addition of the <code>processor_class</code> argument. |
| </p> |
| |
| |
| |
| <h3 id="java_plugin_args">Arguments</h3> |
| <table class="table table-condensed table-bordered table-params"> |
| <colgroup> |
| <col class="col-param" /> |
| <col class="param-description" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="2">Attributes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td id="java_plugin.name"><code>name</code></td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels#target-names">Name</a>; required</p> |
| <p>A unique name for this target.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.deps"> |
| <code>deps</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of libraries to link into this library. |
| See general comments about <code>deps</code> at |
| <a href="/versions/7.5.0/reference/be/common-definitions#typical-attributes">Typical attributes defined by |
| most build rules</a>. |
| <p> |
| The jars built by <code>java_library</code> rules listed in <code>deps</code> will be on |
| the compile-time classpath of this rule. Furthermore the transitive closure of their |
| <code>deps</code>, <code>runtime_deps</code> and <code>exports</code> will be on the |
| runtime classpath. |
| </p> |
| <p> |
| By contrast, targets in the <code>data</code> attribute are included in the runfiles but |
| on neither the compile-time nor runtime classpath. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.srcs"> |
| <code>srcs</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of source files that are processed to create the target. |
| This attribute is almost always required; see exceptions below. |
| <p> |
| Source files of type <code>.java</code> are compiled. In case of generated |
| <code>.java</code> files it is generally advisable to put the generating rule's name |
| here instead of the name of the file itself. This not only improves readability but |
| makes the rule more resilient to future changes: if the generating rule generates |
| different files in the future, you only need to fix one place: the <code>outs</code> of |
| the generating rule. You should not list the generating rule in <code>deps</code> |
| because it is a no-op. |
| </p> |
| <p> |
| Source files of type <code>.srcjar</code> are unpacked and compiled. (This is useful if |
| you need to generate a set of <code>.java</code> files with a genrule.) |
| </p> |
| <p> |
| Rules: if the rule (typically <code>genrule</code> or <code>filegroup</code>) generates |
| any of the files listed above, they will be used the same way as described for source |
| files. |
| </p> |
| |
| <p> |
| This argument is almost always required, except if a |
| <a href="#java_binary.main_class"><code>main_class</code></a> attribute specifies a |
| class on the runtime classpath or you specify the <code>runtime_deps</code> argument. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.data"> |
| <code>data</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The list of files needed by this library at runtime. |
| See general comments about <code>data</code> at |
| <a href="/versions/7.5.0/reference/be/common-definitions#typical-attributes">Typical attributes defined by |
| most build rules</a>. |
| <p> |
| When building a <code>java_library</code>, Bazel doesn't put these files anywhere; if the |
| <code>data</code> files are generated files then Bazel generates them. When building a |
| test that depends on this <code>java_library</code> Bazel copies or links the |
| <code>data</code> files into the runfiles area. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.resources"> |
| <code>resources</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| A list of data files to include in a Java jar. |
| <p> |
| If resources are specified, they will be bundled in the jar along with the usual |
| <code>.class</code> files produced by compilation. The location of the resources inside |
| of the jar file is determined by the project structure. Bazel first looks for Maven's |
| <a href="https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html">standard directory layout</a>, |
| (a "src" directory followed by a "resources" directory grandchild). If that is not |
| found, Bazel then looks for the topmost directory named "java" or "javatests" (so, for |
| example, if a resource is at <code><workspace root>/x/java/y/java/z</code>, the |
| path of the resource will be <code>y/java/z</code>. This heuristic cannot be overridden, |
| however, the <code>resource_strip_prefix</code> attribute can be used to specify a |
| specific alternative directory for resource files. |
| </p> |
| |
| <p> |
| Resources may be source files or generated files. |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.generates_api"> |
| <code>generates_api</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>False</code></p> |
| This attribute marks annotation processors that generate API code. |
| <p>If a rule uses an API-generating annotation processor, other rules |
| depending on it can refer to the generated code only if their |
| compilation actions are scheduled after the generating rule. This |
| attribute instructs Bazel to introduce scheduling constraints when |
| --java_header_compilation is enabled. |
| <p><em class="harmful">WARNING: This attribute affects build |
| performance, use it only if necessary.</em></p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.javacopts"> |
| <code>javacopts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| Extra compiler options for this library. |
| Subject to <a href="make-variables.html">"Make variable"</a> substitution and |
| <a href="common-definitions.html#sh-tokenization">Bourne shell tokenization</a>. |
| <p>These compiler options are passed to javac after the global compiler options.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.neverlink"> |
| <code>neverlink</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>False</code></p> |
| Whether this library should only be used for compilation and not at runtime. |
| Useful if the library will be provided by the runtime environment during execution. Examples |
| of such libraries are the IDE APIs for IDE plug-ins or <code>tools.jar</code> for anything |
| running on a standard JDK. |
| <p> |
| Note that <code>neverlink = 1</code> does not prevent the compiler from inlining material |
| from this library into compilation targets that depend on it, as permitted by the Java |
| Language Specification (e.g., <code>static final</code> constants of <code>String</code> |
| or of primitive types). The preferred use case is therefore when the runtime library is |
| identical to the compilation library. |
| </p> |
| <p> |
| If the runtime library differs from the compilation library then you must ensure that it |
| differs only in places that the JLS forbids compilers to inline (and that must hold for |
| all future versions of the JLS). |
| </p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.output_licenses"> |
| <code>output_licenses</code> |
| </td> |
| <td> |
| <p>Licence type; default is <code>["none"]</code></p> |
| See <a href="/versions/7.5.0/reference/be/common-definitions#binary.output_licenses"><code>common attributes |
| </code></a> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.plugins"> |
| <code>plugins</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Java compiler plugins to run at compile-time. |
| Every <code>java_plugin</code> specified in this attribute will be run whenever this rule |
| is built. A library may also inherit plugins from dependencies that use |
| <code><a href="#java_library.exported_plugins">exported_plugins</a></code>. Resources |
| generated by the plugin will be included in the resulting jar of this rule. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.processor_class"> |
| <code>processor_class</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| The processor class is the fully qualified type of the class that the Java compiler should |
| use as entry point to the annotation processor. If not specified, this rule will not |
| contribute an annotation processor to the Java compiler's annotation processing, but its |
| runtime classpath will still be included on the compiler's annotation processor path. (This |
| is primarily intended for use by |
| <a href="https://errorprone.info/docs/plugins">Error Prone plugins</a>, which are loaded |
| from the annotation processor path using |
| <a href="https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html"> |
| java.util.ServiceLoader</a>.) |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.proguard_specs"> |
| <code>proguard_specs</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Files to be used as Proguard specification. |
| These will describe the set of specifications to be used by Proguard. If specified, |
| they will be added to any <code>android_binary</code> target depending on this library. |
| |
| The files included here must only have idempotent rules, namely -dontnote, -dontwarn, |
| assumenosideeffects, and rules that start with -keep. Other options can only appear in |
| <code>android_binary</code>'s proguard_specs, to ensure non-tautological merges. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.resource_jars"> |
| <code>resource_jars</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Deprecated: Use java_import and deps or runtime_deps instead. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_plugin.resource_strip_prefix"> |
| <code>resource_strip_prefix</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| The path prefix to strip from Java resources. |
| <p> |
| If specified, this path prefix is stripped from every file in the <code>resources</code> |
| attribute. It is an error for a resource file not to be under this directory. If not |
| specified (the default), the path of resource file is determined according to the same |
| logic as the Java package of source files. For example, a source file at |
| <code>stuff/java/foo/bar/a.txt</code> will be located at <code>foo/bar/a.txt</code>. |
| </p> |
| |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <h2 id="java_runtime"> |
| java_runtime |
| </h2> |
| |
| <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeRule.java" target="_blank"> |
| View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span> |
| </a> |
| |
| <pre class="rule-signature">java_runtime(<a href="#java_runtime.name">name</a>, <a href="#java_runtime.srcs">srcs</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="#java_runtime.default_cds">default_cds</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.features">features</a>, <a href="#java_runtime.hermetic_srcs">hermetic_srcs</a>, <a href="#java_runtime.java">java</a>, <a href="#java_runtime.java_home">java_home</a>, <a href="#java_runtime.lib_ct_sym">lib_ct_sym</a>, <a href="#java_runtime.lib_modules">lib_modules</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="#java_runtime.version">version</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre> |
| |
| |
| <p> |
| Specifies the configuration for a Java runtime. |
| </p> |
| |
| <h4 id="java_runtime_example">Example:</h4> |
| |
| <pre class="code"> |
| java_runtime( |
| name = "jdk-9-ea+153", |
| srcs = glob(["jdk9-ea+153/**"]), |
| java_home = "jdk9-ea+153", |
| ) |
| </pre> |
| |
| |
| |
| <h3 id="java_runtime_args">Arguments</h3> |
| <table class="table table-condensed table-bordered table-params"> |
| <colgroup> |
| <col class="col-param" /> |
| <col class="param-description" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="2">Attributes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td id="java_runtime.name"><code>name</code></td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels#target-names">Name</a>; required</p> |
| <p>A unique name for this target.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_runtime.srcs"> |
| <code>srcs</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| All files in the runtime. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_runtime.default_cds"> |
| <code>default_cds</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| Default CDS archive for hermetic <code>java_runtime</code>. When hermetic |
| is enabled for a <code>java_binary</code> target and if the target does not |
| provide its own CDS archive by specifying the |
| <a href="/versions/7.5.0/reference/be/java.html#java_binary.classlist"><code>classlist</code></a> attribute, |
| the <code>java_runtime</code> default CDS is packaged in the hermetic deploy JAR. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_runtime.hermetic_srcs"> |
| <code>hermetic_srcs</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Files in the runtime needed for hermetic deployments. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_runtime.java"> |
| <code>java</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| The path to the java executable. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_runtime.java_home"> |
| <code>java_home</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| The path to the root of the runtime. |
| Subject to <a href="/versions/7.5.0/reference/be/make-variables">"Make" variable</a> substitution. |
| If this path is absolute, the rule denotes a non-hermetic Java runtime with a well-known |
| path. In that case, the <code>srcs</code> and <code>java</code> attributes must be empty. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_runtime.lib_ct_sym"> |
| <code>lib_ct_sym</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| The lib/ct.sym file needed for compilation with <code>--release</code>. If not specified and |
| there is exactly one file in <code>srcs</code> whose path ends with |
| <code>/lib/ct.sym</code>, that file is used. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_runtime.lib_modules"> |
| <code>lib_modules</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| The lib/modules file needed for hermetic deployments. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_runtime.version"> |
| <code>version</code> |
| </td> |
| <td> |
| <p>Integer; default is <code>0</code></p> |
| The feature version of the Java runtime. I.e., the integer returned by |
| <code>Runtime.version().feature()</code>. |
| |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <h2 id="java_toolchain"> |
| java_toolchain |
| </h2> |
| |
| <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java" target="_blank"> |
| View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span> |
| </a> |
| |
| <pre class="rule-signature">java_toolchain(<a href="#java_toolchain.name">name</a>, <a href="#java_toolchain.android_lint_data">android_lint_data</a>, <a href="#java_toolchain.android_lint_jvm_opts">android_lint_jvm_opts</a>, <a href="#java_toolchain.android_lint_opts">android_lint_opts</a>, <a href="#java_toolchain.android_lint_package_configuration">android_lint_package_configuration</a>, <a href="#java_toolchain.android_lint_runner">android_lint_runner</a>, <a href="#java_toolchain.bootclasspath">bootclasspath</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="#java_toolchain.deps_checker">deps_checker</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.features">features</a>, <a href="#java_toolchain.forcibly_disable_header_compilation">forcibly_disable_header_compilation</a>, <a href="#java_toolchain.genclass">genclass</a>, <a href="#java_toolchain.header_compiler">header_compiler</a>, <a href="#java_toolchain.header_compiler_direct">header_compiler_direct</a>, <a href="#java_toolchain.ijar">ijar</a>, <a href="#java_toolchain.jacocorunner">jacocorunner</a>, <a href="#java_toolchain.java_runtime">java_runtime</a>, <a href="#java_toolchain.javabuilder">javabuilder</a>, <a href="#java_toolchain.javabuilder_data">javabuilder_data</a>, <a href="#java_toolchain.javabuilder_jvm_opts">javabuilder_jvm_opts</a>, <a href="#java_toolchain.javac_supports_multiplex_workers">javac_supports_multiplex_workers</a>, <a href="#java_toolchain.javac_supports_worker_multiplex_sandboxing">javac_supports_worker_multiplex_sandboxing</a>, <a href="#java_toolchain.javac_supports_workers">javac_supports_workers</a>, <a href="#java_toolchain.javacopts">javacopts</a>, <a href="#java_toolchain.jvm_opts">jvm_opts</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="#java_toolchain.oneversion">oneversion</a>, <a href="#java_toolchain.oneversion_allowlist_for_tests">oneversion_allowlist_for_tests</a>, <a href="#java_toolchain.oneversion_whitelist">oneversion_whitelist</a>, <a href="#java_toolchain.package_configuration">package_configuration</a>, <a href="#java_toolchain.proguard_allowlister">proguard_allowlister</a>, <a href="#java_toolchain.resourcejar">resourcejar</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="#java_toolchain.singlejar">singlejar</a>, <a href="#java_toolchain.source_version">source_version</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="#java_toolchain.target_version">target_version</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="#java_toolchain.timezone_data">timezone_data</a>, <a href="#java_toolchain.tools">tools</a>, <a href="#java_toolchain.turbine_data">turbine_data</a>, <a href="#java_toolchain.turbine_jvm_opts">turbine_jvm_opts</a>, <a href="common-definitions.html#common.visibility">visibility</a>, <a href="#java_toolchain.xlint">xlint</a>)</pre> |
| |
| |
| <p> |
| Specifies the configuration for the Java compiler. Which toolchain to be used can be changed through |
| the --java_toolchain argument. Normally you should not write those kind of rules unless you want to |
| tune your Java compiler. |
| </p> |
| |
| <h4>Examples</h4> |
| |
| <p>A simple example would be: |
| </p> |
| |
| <pre class="code"> |
| java_toolchain( |
| name = "toolchain", |
| source_version = "7", |
| target_version = "7", |
| bootclasspath = ["//tools/jdk:bootclasspath"], |
| xlint = [ "classfile", "divzero", "empty", "options", "path" ], |
| javacopts = [ "-g" ], |
| javabuilder = ":JavaBuilder_deploy.jar", |
| ) |
| </pre> |
| |
| |
| |
| <h3 id="java_toolchain_args">Arguments</h3> |
| <table class="table table-condensed table-bordered table-params"> |
| <colgroup> |
| <col class="col-param" /> |
| <col class="param-description" /> |
| </colgroup> |
| <thead> |
| <tr> |
| <th colspan="2">Attributes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td id="java_toolchain.name"><code>name</code></td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels#target-names">Name</a>; required</p> |
| <p>A unique name for this target.</p> |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.android_lint_data"> |
| <code>android_lint_data</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Labels of tools available for label-expansion in android_lint_jvm_opts. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.android_lint_jvm_opts"> |
| <code>android_lint_jvm_opts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| The list of arguments for the JVM when invoking Android Lint. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.android_lint_opts"> |
| <code>android_lint_opts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| The list of Android Lint arguments. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.android_lint_package_configuration"> |
| <code>android_lint_package_configuration</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Android Lint Configuration that should be applied to the specified package groups. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.android_lint_runner"> |
| <code>android_lint_runner</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| Label of the Android Lint runner, if any. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.bootclasspath"> |
| <code>bootclasspath</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| The Java target bootclasspath entries. Corresponds to javac's -bootclasspath flag. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.deps_checker"> |
| <code>deps_checker</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Label of the ImportDepsChecker deploy jar. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.forcibly_disable_header_compilation"> |
| <code>forcibly_disable_header_compilation</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>False</code></p> |
| Overrides --java_header_compilation to disable header compilation on platforms that do not |
| support it, e.g. JDK 7 Bazel. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.genclass"> |
| <code>genclass</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; required</p> |
| Label of the GenClass deploy jar. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.header_compiler"> |
| <code>header_compiler</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Label of the header compiler. Required if --java_header_compilation is enabled. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.header_compiler_direct"> |
| <code>header_compiler_direct</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Optional label of the header compiler to use for direct classpath actions that do not |
| include any API-generating annotation processors. |
| |
| <p>This tool does not support annotation processing. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.ijar"> |
| <code>ijar</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; required</p> |
| Label of the ijar executable. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.jacocorunner"> |
| <code>jacocorunner</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| Label of the JacocoCoverageRunner deploy jar. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.java_runtime"> |
| <code>java_runtime</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; required</p> |
| The java_runtime to use with this toolchain. It defaults to java_runtime |
| in execution configuration. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.javabuilder"> |
| <code>javabuilder</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; required</p> |
| Label of the JavaBuilder deploy jar. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.javabuilder_data"> |
| <code>javabuilder_data</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Labels of data available for label-expansion in javabuilder_jvm_opts. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.javabuilder_jvm_opts"> |
| <code>javabuilder_jvm_opts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| The list of arguments for the JVM when invoking JavaBuilder. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.javac_supports_multiplex_workers"> |
| <code>javac_supports_multiplex_workers</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>True</code></p> |
| True if JavaBuilder supports running as a multiplex persistent worker, false if it doesn't. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.javac_supports_worker_multiplex_sandboxing"> |
| <code>javac_supports_worker_multiplex_sandboxing</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>False</code></p> |
| True if JavaBuilder supports multiplex sandboxing, false if it doesn't. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.javac_supports_workers"> |
| <code>javac_supports_workers</code> |
| </td> |
| <td> |
| <p>Boolean; default is <code>True</code></p> |
| True if JavaBuilder supports running as a persistent worker, false if it doesn't. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.javacopts"> |
| <code>javacopts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| The list of extra arguments for the Java compiler. Please refer to the Java compiler |
| documentation for the extensive list of possible Java compiler flags. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.jvm_opts"> |
| <code>jvm_opts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| The list of arguments for the JVM when invoking the Java compiler. Please refer to the Java |
| virtual machine documentation for the extensive list of possible flags for this option. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.oneversion"> |
| <code>oneversion</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| Label of the one-version enforcement binary. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.oneversion_allowlist_for_tests"> |
| <code>oneversion_allowlist_for_tests</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| Label of the one-version allowlist for tests. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.oneversion_whitelist"> |
| <code>oneversion_whitelist</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| Label of the one-version whitelist. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.package_configuration"> |
| <code>package_configuration</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Configuration that should be applied to the specified package groups. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.proguard_allowlister"> |
| <code>proguard_allowlister</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>"@bazel_tools//tools/jdk:proguard_whitelister"</code></p> |
| Label of the Proguard allowlister. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.resourcejar"> |
| <code>resourcejar</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Label of the resource jar builder executable. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.singlejar"> |
| <code>singlejar</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; required</p> |
| Label of the SingleJar deploy jar. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.source_version"> |
| <code>source_version</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| The Java source version (e.g., '6' or '7'). It specifies which set of code structures |
| are allowed in the Java source code. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.target_version"> |
| <code>target_version</code> |
| </td> |
| <td> |
| <p>String; default is <code>""</code></p> |
| The Java target version (e.g., '6' or '7'). It specifies for which Java runtime the class |
| should be build. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.timezone_data"> |
| <code>timezone_data</code> |
| </td> |
| <td> |
| <p><a href="/versions/7.5.0/concepts/labels">Label</a>; default is <code>None</code></p> |
| Label of a resource jar containing timezone data. If set, the timezone data is added as an |
| implicitly runtime dependency of all java_binary rules. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.tools"> |
| <code>tools</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Labels of tools available for label-expansion in jvm_opts. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.turbine_data"> |
| <code>turbine_data</code> |
| </td> |
| <td> |
| <p>List of <a href="/versions/7.5.0/concepts/labels">labels</a>; default is <code>[]</code></p> |
| Labels of data available for label-expansion in turbine_jvm_opts. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.turbine_jvm_opts"> |
| <code>turbine_jvm_opts</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| The list of arguments for the JVM when invoking turbine. |
| |
| </td> |
| </tr> |
| <tr> |
| <td id="java_toolchain.xlint"> |
| <code>xlint</code> |
| </td> |
| <td> |
| <p>List of strings; default is <code>[]</code></p> |
| The list of warning to add or removes from default list. Precedes it with a dash to |
| removes it. Please see the Javac documentation on the -Xlint options for more information. |
| |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <!-- Generated footer --> |
| |
| </body> |
| </html> |