Java ルール

ルール

java_binary

java_binary(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, output_licenses, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)

Java アーカイブ(「jar ファイル」)と、ルールと同じ名前のラッパー シェル スクリプトをビルドします。 ラッパー シェル スクリプトはクラスパスを使用します。これには、特に、各変数の jar ファイルが含まれます。 ライブラリを指定します。

ラッパー スクリプトには、いくつかの一意のフラグを指定できます。詳しくは、 //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt を参照してください。

暗黙的な出力ターゲット

  • name.jar: クラスファイルなどを含む Java アーカイブ。 バイナリの直接的な依存関係に対応するリソースです。
  • name-src.jar: ソース("source")を含むアーカイブ jar など)。
  • name_deploy.jar: デプロイに適した Java アーカイブ(のみ 明示的にリクエストされた場合にビルドされます)。

    ルールの「<name>_deploy.jar」ターゲットを作成しています マニフェスト付きの自己完結型の jar ファイルを作成し、 java -jar コマンド、またはラッパー スクリプトの --singlejar を使用します。 選択します。java -jar よりもラッパー スクリプトを使用することをおすすめします。これは、 JVM フラグとオプションも渡します。 ネイティブライブラリを読み込みます。

    deploy jar には、Terraform で定義したクラスローダーで検出されるすべてのクラスが クラスパスをバイナリのラッパー スクリプトから最初から最後まで検索また、 依存関係に必要なネイティブ ライブラリが格納されています。これらは自動的に読み込まれるので 実行時に JVM に取り込まれます。

    ターゲットが launcher を指定している場合 属性を使用すると、_deploy.jar は通常の JAR ファイルではなく、 ネイティブ バイナリ。これには、ランチャーと、以下のネイティブ(C++)依存関係が含まれます。 静的バイナリにリンクされています実際の jar ファイルのバイトは、 追加され、単一のバイナリ blob が作成され、 Java コードが含まれます生成された jar ファイルを直接実行できます ネイティブバイナリを実行するのと同じように使用できます

  • name_deploy-src.jar: ソースを含むアーカイブ ターゲットの推移的クロージャから収集された情報です。これらは UDM クラスのクラスと deploy.jar(ただし、jar に一致するソース JAR がない場合を除く)。

deps 属性は、指定されていない java_binary ルールで使用できません。 srcs、適用するには、 main_class 提供元: runtime_deps を選択します。

よくある間違いを次のコード スニペットに示します。

java_binary(
    name = "DontDoThis",
    srcs = [
        ...,
        "GeneratedJavaFile.java",  # a generated .java file
    ],
    deps = [":generating_rule",],  # rule that generates that file
)

代わりに次のようにします。

java_binary(
    name = "DoThisInstead",
    srcs = [
        ...,
        ":generating_rule",
    ],
)

引数

属性
name

Name; required

このターゲットの一意の名前。


アプリケーションのメインのエントリ ポイントとなるソースファイルの名前を使用して、 (拡張子は除く)。たとえば、エントリ ポイントが Main.java の場合、あなたの名前は Main のようになります。
deps

List of labels; optional

ターゲットにリンクする他のライブラリのリスト。 deps に関する一般的なコメントを見る: 一般的な属性は ほとんどのビルドルールに適用されます。
srcs

List of labels; optional

ターゲットを作成するために処理されるソースファイルのリスト。 この属性はほとんどの場合必須です。下記の例外を参照してください。

.java 型のソースファイルはコンパイルされます。生成された .java ファイルには、生成ルールの名前を入力することをおすすめします。 ファイル自体の名前ではなく、ここに入力します。これにより 可読性が向上するだけでなく これにより、将来の変更に対するルールの復元性が向上します。つまり、生成ルールによって 1 か所修正するだけで済みます。outs 表示されます。deps に生成ルールを記載しないでください NoOps です

.srcjar 型のソースファイルは、展開されてコンパイルされます。(これは、 genrule で一連の .java ファイルを生成する必要があります)。

ルール: ルール(通常は genrule または filegroup)が ソース ファイルと同じ方法で使用されます。 できます。

ほとんどの場合、この引数は必須ですが、 main_class 属性では、 クラスに付けるか、runtime_deps 引数を指定します。

resources

List of labels; optional

Java jar に含めるデータファイルのリスト。

リソースを指定すると、通常のリソースとともに jar にバンドルされます。 コンパイルによって生成された .class ファイル。Cloud Storage 内のリソースの場所は プロジェクト構造によって決まります。Bazel はまず、Maven の 標準のディレクトリ レイアウト (「src」ディレクトリの後に「resources」ディレクトリの孫が続く)そうでない場合は Bazel は、最上位にある「java」というディレクトリを探します。または「javatests」(つまり、 たとえば、リソースが <workspace root>/x/java/y/java/z にある場合、 リソースのパスは y/java/z になります。このヒューリスティックはオーバーライドできません ただし、resource_strip_prefix 属性を使用すると、 リソース ファイル用の代替ディレクトリです。

リソースには、ソースファイルまたは生成されたファイルを指定できます。

classpath_resources

List of labels; optional

他に方法がない場合を除いて、このオプションは使用しないでください)

Java ツリーのルートに配置する必要があるリソースのリスト。この属性の 必要なサードパーティ ライブラリをサポートすることのみを目的として、 "myconfig.xml" と完全に同じである必要があります。アクセスできるのは 名前空間が競合する可能性があるため、ライブラリではなくバイナリに存在します。

create_executable

Boolean; optional; nonconfigurable; default is True

バイナリが実行可能かどうか。非実行バイナリは、推移的 デプロイ jar に挿入できますが、直接実行することはできません。 この属性が設定されている場合、ラッパー スクリプトは作成されません。このように設定すると、 launcher 属性または main_class 属性が 0 の場合は、この値を 0 に設定します。 設定されます。
deploy_env

List of labels; optional

デプロイを表す他の java_binary ターゲットのリスト 作成します。 別のファイルによって読み込まれるプラグインをビルドするときに、この属性を設定します java_binary
この属性を設定すると、すべての依存関係が除外されます このバイナリのランタイム クラスパス(とデプロイ jar)が、この バイナリと deploy_env で指定されたターゲット。
deploy_manifest_lines

List of strings; optional

生成された META-INF/manifest.mf ファイルに追加する行のリスト。 目標は *_deploy.jar です。この属性の内容は件名ではありませんMake variable」置換に変更します。
javacopts

List of strings; optional

このライブラリの追加のコンパイラ オプション。 「変数を作成」による置換を適用し、 Bourne シェルのトークン化

これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。

jvm_flags

List of strings; optional

このバイナリを実行するために生成されたラッパー スクリプトに埋め込むフラグのリスト。 $(location) と [変数を作成] で置換する Bourne シェルのトークン化

Java バイナリのラッパー スクリプトに CLASSPATH 定義が含まれている (依存する jar をすべて見つけるため)、適切な Java インタープリタを呼び出します。 ラッパー スクリプトによって生成されたコマンドラインには、 メインクラスの後に "$@" を付け、他のクラスを渡せるようにします。 クラス名の後に引数を指定します。ただし、解析対象の引数は コマンドのクラス名のに指定する必要があります。 追加します。jvm_flags の内容がラッパーに追加される スクリプトを書き留めてください。

この属性は *_deploy.jar には作用しないことに注意してください。 出力です。

launcher

Label; optional

Java プログラムの実行に使用するバイナリを JDK に含まれる通常の bin/java プログラム。 ターゲットは cc_binary にする必要があります。次を含む cc_binary: 実装する <ph type="x-smartling-placeholder"></ph> この属性の値として Java Invocation API を指定できます。

デフォルトでは、Bazel は通常の JDK ランチャー(bin/java または java.exe)を使用します。

関連する --java_launcher Bazel フラグは、 次がある java_binary ターゲットと java_test ターゲット launcher 属性を指定していない

ネイティブ(C++、SWIG、JNI)依存関係のビルドは異なることに注意してください。 JDK ランチャーを使用しているか、別のランチャーを使用しているかに応じて、次の操作を行います。

  • 通常の JDK ランチャー(デフォルト)を使用している場合、ネイティブ依存関係は {name}_nativedeps.so という名前の共有ライブラリとしてビルドされます。 {name} は、この java_binary ルールの name 属性です。 未使用のコードは、この構成のリンカーによって削除されません
  • 他のランチャーを使用している場合、ネイティブ(C++)依存関係は静的に {name}_nativedeps という名前のバイナリにリンクされます。ここで、{name} この java_binary ルールの name 属性です。この例では リンカーは、使用されていないと判断したコードを結果のバイナリから削除します。 つまり、JNI 経由でのみアクセスされる C++ コードは、 cc_library ターゲットが alwayslink = 1 を指定している。

デフォルトの JDK ランチャー以外のランチャーを使用する場合、 *_deploy.jar 出力の変更。詳細については、 java_binary のドキュメントをご覧ください。

main_class

String; optional

エントリ ポイントとして使用する main() メソッドを含むクラスの名前。 ルールでこのオプションを使用する場合、srcs=[...] リストは必要ありません。 したがって、この属性を使用すると、すでに作成済みの Java ライブラリから実行可能ファイルを作成できます。 1 つ以上の main() メソッドが含まれます。

この属性の値は、ソースファイルではなくクラス名です。クラスは 実行時に利用可能: このルールによって(srcs から)コンパイルされるか、 直接的または推移的依存関係によって提供される(runtime_deps または deps)。クラスが使用できない場合、バイナリは実行時に失敗します。そこに ビルド時のチェックはありません

plugins

List of labels; optional

コンパイル時に実行する Java コンパイラ プラグイン。 このルールでは、この属性で指定されたすべての java_plugin が実行されます。 構築します。ライブラリは、使用する依存関係からプラグインを継承し、 exported_plugins。リソース 生成 AI は、このルールの生成される jar に含められます。
resource_jars

List of labels; optional

非推奨: 代わりに java_import と deps または runtime_deps を使用してください。
resource_strip_prefix

String; optional

Java リソースから削除するパス接頭辞。

指定すると、このパス接頭辞が resources 内のすべてのファイルから削除されます 属性です。リソース ファイルがこのディレクトリにない場合はエラーになります。回答が「いいえ」の場合 が指定された場合(デフォルト)、リソース ファイルのパスは、 などのロジックをソースファイルの Java パッケージとして使用します。たとえば、 stuff/java/foo/bar/a.txt の所在地は foo/bar/a.txt です。

runtime_deps

List of labels; optional

最終バイナリまたは実行時にのみテストで使用できるようにするライブラリ。 通常の deps と同様に、これらはランタイム クラスパスに表示されますが、 コンパイル時のクラスパスではなく、実行時にのみ必要な依存関係は、 表示されます。依存関係分析ツールは、両方に出現するターゲットを無視する runtime_depsdeps
stamp

Integer; optional; default is -1

ビルド情報をバイナリにエンコードするかどうか。可能な値: <ph type="x-smartling-placeholder">
    </ph>
  • stamp = 1: ビルド情報を常にバイナリにスタンプします。これは、 --nostamp ビルド。この 設定しないでください。この設定を行うと、インスタンスのリモート キャッシュが強制終了される バイナリとそれに依存するダウンストリーム アクションが含まれます。
  • stamp = 0: ビルド情報を常に定数値に置き換えます。この 適切なビルド結果キャッシュを提供します。
  • stamp = -1: ビルド情報の埋め込みは、 --[no]stamp フラグ。

スタンプされたバイナリは、依存関係が変更されない限り再ビルドされません

use_launcher

Boolean; optional; default is True

バイナリがカスタム ランチャーを使用するかどうか。

この属性を false に設定すると、 launcher 属性と関連 --java_launcher フラグ このターゲットでは無視されます。

use_testrunner

Boolean; optional; default is False

テストランナーを使用する(デフォルト) com.google.testing.junit.runner.BazelTestRunner など)クラスを Java プログラム用のメイン エントリ ポイントを作成し、テストクラスを提供します。 bazel.test_suite の値としてテストランナーに送信 システム プロパティ。 これを使用して、デフォルトの テストランナーを使用して java_test 個のルール、 java_binary ルールには使用しないでください。可能性は低い これを行うことをおすすめします1 回の使用: AllTest (データベースを設定するために)別のルールによって呼び出される できます)。AllTest ルールは java_binary として宣言する必要がありますが、 テストランナーをメインのエントリ ポイントとして使用します。 テストランナー クラスの名前は、main_class 属性でオーバーライドできます。

java_import

java_import(name, deps, data, compatible_with, constraints, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, visibility)

このルールでは、プリコンパイルされた .jar ファイルを次のように使用できます。 java_libraryjava_binary 個のルール。

    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",
        ],
    )

引数

属性
name

Name; required

このターゲットの一意の名前。

deps

List of labels; optional

ターゲットにリンクする他のライブラリのリスト。 java_library.deps をご覧ください。
constraints

List of strings; optional; nonconfigurable

Java ライブラリとしてこのルールに適用される追加の制約。
exports

List of labels; optional

このルールのユーザーが使用できるようにするターゲット。 java_library.exports をご覧ください。
jars

List of labels; required

このターゲットに依存する Java ターゲットに提供される JAR ファイルのリスト。

Boolean; optional; default is False

このライブラリは、実行時ではなくコンパイル時のみに使用してください。 ランタイム環境で提供されるライブラリを使用する場合に有用 表示されます。このようなライブラリの例として、IDE API があります。 IDE プラグインの場合は tools.jar、 使用できます。
proguard_specs

List of labels; optional

ProGuard 仕様として使用されるファイル。 ここでは、Proguard で使用される一連の仕様について説明します。指定すると、 このライブラリに応じて、任意の android_binary ターゲットに追加されます。 ここに含めるファイルには、べき等ルール(-dontnote、-dontwarn、 -keep で始まるルールを定義します。その他のオプションは android_binary の proguard_specs: tautological 以外のマージを保証します。
runtime_deps

List of labels; optional

最終バイナリまたは実行時にのみテストで使用できるようにするライブラリ。 java_library.runtime_deps をご覧ください。
srcjar

Label; optional

コンパイルされた JAR ファイルのソースコードが含まれる JAR ファイル。

java_library

java_library(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javacopts, licenses, neverlink, plugins, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, visibility)

このルールは、ソースを .jar ファイルにコンパイルしてリンクします。

暗黙的な出力ターゲット

  • libname.jar: クラスファイルを含む Java アーカイブ。
  • libname-src.jar: ソース("source")を含むアーカイブ jar など)。

引数

属性
name

Name; required

このターゲットの一意の名前。

deps

List of labels; optional

このライブラリにリンクするライブラリのリスト。 deps に関する一般的なコメントを見る: 一般的な属性は ほとんどのビルドルールに適用されます。

deps にリストされている java_library ルールによってビルドされた JAR がオンになります このルールのコンパイル時のクラスパス。さらに、これらのレイヤの推移的クロージングは、 depsruntime_depsexports は、 ランタイム クラスパスを指定します。

一方、data 属性のターゲットは runfile に含まれますが、 コンパイル時クラスパスにもランタイムクラスパスにもないからです。

srcs

List of labels; optional

ターゲットを作成するために処理されるソースファイルのリスト。 この属性はほとんどの場合必須です。下記の例外を参照してください。

.java 型のソースファイルはコンパイルされます。生成された .java ファイルには、生成ルールの名前を入力することをおすすめします。 ファイル自体の名前ではなく、ここに入力します。これにより 可読性が向上するだけでなく これにより、将来の変更に対するルールの復元性が向上します。つまり、生成ルールによって 1 か所修正するだけで済みます。outs 表示されます。deps に生成ルールを記載しないでください NoOps です

.srcjar 型のソースファイルは、展開されてコンパイルされます。(これは、 genrule で一連の .java ファイルを生成する必要があります)。

ルール: ルール(通常は genrule または filegroup)が ソース ファイルと同じ方法で使用されます。 できます。

ほとんどの場合、この引数は必須ですが、 main_class 属性では、 クラスに付けるか、runtime_deps 引数を指定します。

data

List of labels; optional

実行時にこのライブラリが必要とするファイルのリスト。 data に関する一般的なコメントを見る: 一般的な属性は ほとんどのビルドルールに適用されます。

java_library をビルドする際、Bazel はこれらのファイルをどこにも配置しません。もし data ファイルは生成されたファイルであり、Bazel によって生成されます。モデルを この java_library Bazel のコピーまたはリンクに依存するテスト data ファイルを runfiles 領域に配置します。

resources

List of labels; optional

Java jar に含めるデータファイルのリスト。

リソースを指定すると、通常のリソースとともに jar にバンドルされます。 コンパイルによって生成された .class ファイル。Cloud Storage 内のリソースの場所は プロジェクト構造によって決まります。Bazel はまず、Maven の 標準のディレクトリ レイアウト (「src」ディレクトリの後に「resources」ディレクトリの孫が続く)そうでない場合は Bazel は、最上位にある「java」というディレクトリを探します。または「javatests」(つまり、 たとえば、リソースが <workspace root>/x/java/y/java/z にある場合、 リソースのパスは y/java/z になります。このヒューリスティックはオーバーライドできません ただし、resource_strip_prefix 属性を使用すると、 リソース ファイル用の代替ディレクトリです。

リソースには、ソースファイルまたは生成されたファイルを指定できます。

exported_plugins

List of labels; optional

java_plugin のリスト(アノテーション このライブラリに直接依存するライブラリにエクスポートできます。

指定した java_plugin のリストは、次を実行するライブラリに適用されます。 このライブラリがこれらのライブラリを明示的に宣言しているかのように、 plugins のラベル。

exports

List of labels; optional

エクスポートされたライブラリ。

ここにルールをリストすると、あたかも親が明示的に親ルールを操作しているかのように、親ルールで 必要があります。これは、通常の(エクスポートされていない)deps には当てはまりません。

概要: 依存関係がある場合にルール XX は YX のコードにアクセスできます deps エッジで始まり、その後にゼロ個以上のパスが続くパス exports 個のエッジ。それを示す例をいくつか見てみましょう。

AB に依存し、BC に依存しているとします。今回の場合 C は A の推移的依存関係であるため、C のソースを変更して A を再構築すると、 すべてを正しくビルドし直せます。ただし、A は C のクラスを使用できません。許可する A が deps で C を宣言する必要があるか、B を使用して A が (および A に依存するすべてのもの)を、(B)の exports で C を宣言することで) 属性です。

エクスポートされたライブラリのクローズは、すべての直接の親ルールで使用できます。少し A は B に依存し、B は C と D に依存し、さらに C はエクスポートしますが D はエクスポートしません。 これで、A は C にはアクセスできますが、D にはアクセスできません。ここで、C と D が一部のライブラリをエクスポートした場合、および D' A は C' にのみアクセスすることができました。あります。

重要: エクスポートされたルールは、通常の依存関係ではありません。前の例で言うと、 B が C をエクスポートし、C も使用する場合は、その B も C をリストする必要があります。 deps

javacopts

List of strings; optional

このライブラリの追加のコンパイラ オプション。 「変数を作成」による置換を適用し、 Bourne シェルのトークン化

これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。

Boolean; optional; default is False

このライブラリをコンパイルにのみ使用し、実行時は使用しないかどうか。 実行時にランタイム環境によってライブラリが提供される場合に便利です。例 その中には、IDE プラグイン用の IDE API や、あらゆるもの用の tools.jar があります。 パフォーマンスです

なお、neverlink = 1 を指定しても、コンパイラによるマテリアルのインライン化は防止されません。 Java で許可されているコンパイル ターゲットにこのライブラリから変換します。 言語仕様(例:Stringstatic final 定数 。そのため、推奨されるユースケースは、ランタイム ライブラリが これはコンパイル ライブラリと同じです。

ランタイム ライブラリがコンパイル ライブラリと異なる場合は、それが 違いは、JLS でコンパイラのインライン実行が禁止されている場所(およびインラインで宣言され、 リリースされます。

plugins

List of labels; optional

コンパイル時に実行する Java コンパイラ プラグイン。 このルールでは、この属性で指定されたすべての java_plugin が実行されます。 構築します。ライブラリは、使用する依存関係からプラグインを継承し、 exported_plugins。リソース 生成 AI は、このルールの生成される jar に含められます。
proguard_specs

List of labels; optional

ProGuard 仕様として使用されるファイル。 ここでは、Proguard で使用される一連の仕様について説明します。指定すると、 このライブラリに応じて、任意の android_binary ターゲットに追加されます。 ここに含めるファイルには、べき等ルール(-dontnote、-dontwarn、 -keep で始まるルールを定義します。その他のオプションは android_binary の proguard_specs: tautological 以外のマージを保証します。
resource_jars

List of labels; optional

非推奨: 代わりに java_import と deps または runtime_deps を使用してください。
resource_strip_prefix

String; optional

Java リソースから削除するパス接頭辞。

指定すると、このパス接頭辞が resources 内のすべてのファイルから削除されます 属性です。リソース ファイルがこのディレクトリにない場合はエラーになります。回答が「いいえ」の場合 が指定された場合(デフォルト)、リソース ファイルのパスは、 などのロジックをソースファイルの Java パッケージとして使用します。たとえば、 stuff/java/foo/bar/a.txt の所在地は foo/bar/a.txt です。

runtime_deps

List of labels; optional

最終バイナリまたは実行時にのみテストで使用できるようにするライブラリ。 通常の deps と同様に、これらはランタイム クラスパスに表示されますが、 コンパイル時のクラスパスではなく、実行時にのみ必要な依存関係は、 表示されます。依存関係分析ツールは、両方に出現するターゲットを無視する runtime_depsdeps

java_lite_proto_library

java_lite_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

java_lite_proto_library は、.proto ファイルから Java コードを生成します。

depsproto_library ルールを指す必要があります。

例:

java_library(
    name = "lib",
    deps = [":foo"],
)

java_lite_proto_library(
    name = "foo",
    deps = [":bar"],
)

proto_library(
    name = "bar",
)

引数

属性
name

Name; required

このターゲットの一意の名前。

deps

List of labels; optional

proto_library のリスト Java コードの生成ルールを定義します。

java_proto_library

java_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

java_proto_library は、.proto ファイルから Java コードを生成します。

depsproto_library ルールを指す必要があります。

例:

java_library(
    name = "lib",
    deps = [":foo_java_proto"],
)

java_proto_library(
    name = "foo_java_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

引数

属性
name

Name; required

このターゲットの一意の名前。

deps

List of labels; optional

proto_library のリスト Java コードの生成ルールを定義します。

java_test

java_test(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, use_testrunner, visibility)

java_test() ルールは Java テストをコンパイルします。テストは、Python や Node.js などの テストコードです。テストランナーのメインメソッドが、コンパイルされるメインクラスの代わりに呼び出されます。

暗黙的な出力ターゲット

  • name.jar: Java アーカイブ。
  • name_deploy.jar: 適切な Java アーカイブ 必要があります。(明示的にリクエストされた場合にのみビルドされます)。詳しくは、 name_deploy.jar の出力: java_binary をご覧ください。

java_binary() 引数のセクションをご覧ください。このルールはまた、 サポートするすべての属性の一般的な すべてのテストルール(*_test)に適用されます。

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",
    ],
)

引数

属性
name

Name; required

このターゲットの一意の名前。

deps

List of labels; optional

ターゲットにリンクする他のライブラリのリスト。 deps に関する一般的なコメントを見る: 一般的な属性は ほとんどのビルドルールに適用されます。
srcs

List of labels; optional

ターゲットを作成するために処理されるソースファイルのリスト。 この属性はほとんどの場合必須です。下記の例外を参照してください。

.java 型のソースファイルはコンパイルされます。生成された .java ファイルには、生成ルールの名前を入力することをおすすめします。 ファイル自体の名前ではなく、ここに入力します。これにより 可読性が向上するだけでなく これにより、将来の変更に対するルールの復元性が向上します。つまり、生成ルールによって 1 か所修正するだけで済みます。outs 表示されます。deps に生成ルールを記載しないでください NoOps です

.srcjar 型のソースファイルは、展開されてコンパイルされます。(これは、 genrule で一連の .java ファイルを生成する必要があります)。

ルール: ルール(通常は genrule または filegroup)が ソース ファイルと同じ方法で使用されます。 できます。

ほとんどの場合、この引数は必須ですが、 main_class 属性では、 クラスに付けるか、runtime_deps 引数を指定します。

resources

List of labels; optional

Java jar に含めるデータファイルのリスト。

リソースを指定すると、通常のリソースとともに jar にバンドルされます。 コンパイルによって生成された .class ファイル。Cloud Storage 内のリソースの場所は プロジェクト構造によって決まります。Bazel はまず、Maven の 標準のディレクトリ レイアウト (「src」ディレクトリの後に「resources」ディレクトリの孫が続く)そうでない場合は Bazel は、最上位にある「java」というディレクトリを探します。または「javatests」(つまり、 たとえば、リソースが <workspace root>/x/java/y/java/z にある場合、 リソースのパスは y/java/z になります。このヒューリスティックはオーバーライドできません ただし、resource_strip_prefix 属性を使用すると、 リソース ファイル用の代替ディレクトリです。

リソースには、ソースファイルまたは生成されたファイルを指定できます。

classpath_resources

List of labels; optional

他に方法がない場合を除いて、このオプションは使用しないでください)

Java ツリーのルートに配置する必要があるリソースのリスト。この属性の 必要なサードパーティ ライブラリをサポートすることのみを目的として、 "myconfig.xml" と完全に同じである必要があります。アクセスできるのは 名前空間が競合する可能性があるため、ライブラリではなくバイナリに存在します。

create_executable

Boolean; optional; nonconfigurable; default is True

バイナリが実行可能かどうか。非実行バイナリは、推移的 デプロイ jar に挿入できますが、直接実行することはできません。 この属性が設定されている場合、ラッパー スクリプトは作成されません。このように設定すると、 launcher 属性または main_class 属性が 0 の場合は、この値を 0 に設定します。 設定されます。
deploy_manifest_lines

List of strings; optional

生成された META-INF/manifest.mf ファイルに追加する行のリスト。 目標は *_deploy.jar です。この属性の内容は件名ではありませんMake variable」置換に変更します。
javacopts

List of strings; optional

このライブラリの追加のコンパイラ オプション。 「変数を作成」による置換を適用し、 Bourne シェルのトークン化

これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。

jvm_flags

List of strings; optional

このバイナリを実行するために生成されたラッパー スクリプトに埋め込むフラグのリスト。 $(location) と [変数を作成] で置換する Bourne シェルのトークン化

Java バイナリのラッパー スクリプトに CLASSPATH 定義が含まれている (依存する jar をすべて見つけるため)、適切な Java インタープリタを呼び出します。 ラッパー スクリプトによって生成されたコマンドラインには、 メインクラスの後に "$@" を付け、他のクラスを渡せるようにします。 クラス名の後に引数を指定します。ただし、解析対象の引数は コマンドのクラス名のに指定する必要があります。 追加します。jvm_flags の内容がラッパーに追加される スクリプトを書き留めてください。

この属性は *_deploy.jar には作用しないことに注意してください。 出力です。

launcher

Label; optional

Java プログラムの実行に使用するバイナリを JDK に含まれる通常の bin/java プログラム。 ターゲットは cc_binary にする必要があります。次を含む cc_binary: 実装する <ph type="x-smartling-placeholder"></ph> この属性の値として Java Invocation API を指定できます。

デフォルトでは、Bazel は通常の JDK ランチャー(bin/java または java.exe)を使用します。

関連する --java_launcher Bazel フラグは、 次がある java_binary ターゲットと java_test ターゲット launcher 属性を指定していない

ネイティブ(C++、SWIG、JNI)依存関係のビルドは異なることに注意してください。 JDK ランチャーを使用しているか、別のランチャーを使用しているかに応じて、次の操作を行います。

  • 通常の JDK ランチャー(デフォルト)を使用している場合、ネイティブ依存関係は {name}_nativedeps.so という名前の共有ライブラリとしてビルドされます。 {name} は、この java_binary ルールの name 属性です。 未使用のコードは、この構成のリンカーによって削除されません
  • 他のランチャーを使用している場合、ネイティブ(C++)依存関係は静的に {name}_nativedeps という名前のバイナリにリンクされます。ここで、{name} この java_binary ルールの name 属性です。この例では リンカーは、使用されていないと判断したコードを結果のバイナリから削除します。 つまり、JNI 経由でのみアクセスされる C++ コードは、 cc_library ターゲットが alwayslink = 1 を指定している。

デフォルトの JDK ランチャー以外のランチャーを使用する場合、 *_deploy.jar 出力の変更。詳細については、 java_binary のドキュメントをご覧ください。

main_class

String; optional

エントリ ポイントとして使用する main() メソッドを含むクラスの名前。 ルールでこのオプションを使用する場合、srcs=[...] リストは必要ありません。 したがって、この属性を使用すると、すでに作成済みの Java ライブラリから実行可能ファイルを作成できます。 1 つ以上の main() メソッドが含まれます。

この属性の値は、ソースファイルではなくクラス名です。クラスは 実行時に利用可能: このルールによって(srcs から)コンパイルされるか、 直接的または推移的依存関係によって提供される(runtime_deps または deps)。クラスが使用できない場合、バイナリは実行時に失敗します。そこに ビルド時のチェックはありません

plugins

List of labels; optional

コンパイル時に実行する Java コンパイラ プラグイン。 このルールでは、この属性で指定されたすべての java_plugin が実行されます。 構築します。ライブラリは、使用する依存関係からプラグインを継承し、 exported_plugins。リソース 生成 AI は、このルールの生成される jar に含められます。
resource_jars

List of labels; optional

非推奨: 代わりに java_import と deps または runtime_deps を使用してください。
resource_strip_prefix

String; optional

Java リソースから削除するパス接頭辞。

指定すると、このパス接頭辞が resources 内のすべてのファイルから削除されます 属性です。リソース ファイルがこのディレクトリにない場合はエラーになります。回答が「いいえ」の場合 が指定された場合(デフォルト)、リソース ファイルのパスは、 などのロジックをソースファイルの Java パッケージとして使用します。たとえば、 stuff/java/foo/bar/a.txt の所在地は foo/bar/a.txt です。

runtime_deps

List of labels; optional

最終バイナリまたは実行時にのみテストで使用できるようにするライブラリ。 通常の deps と同様に、これらはランタイム クラスパスに表示されますが、 コンパイル時のクラスパスではなく、実行時にのみ必要な依存関係は、 表示されます。依存関係分析ツールは、両方に出現するターゲットを無視する runtime_depsdeps
stamp

Integer; optional; default is 0

ビルド情報をバイナリにエンコードするかどうか。可能な値: <ph type="x-smartling-placeholder">
    </ph>
  • stamp = 1: ビルド情報を常にバイナリにスタンプします。これは、 --nostamp ビルド。この 設定しないでください。この設定を行うと、インスタンスのリモート キャッシュが強制終了される バイナリとそれに依存するダウンストリーム アクションが含まれます。
  • stamp = 0: ビルド情報を常に定数値に置き換えます。この 適切なビルド結果キャッシュを提供します。
  • stamp = -1: ビルド情報の埋め込みは、 --[no]stamp フラグ。

スタンプされたバイナリは、依存関係が変更されない限り再ビルドされません

test_class

String; optional

テストランナーによって読み込まれる Java クラス。

この引数が定義されていない場合は、デフォルトで以前のモードが使用され、 代わりにテスト引数が使用されます。--nolegacy_bazel_java_test フラグを設定する 最初の引数にフォールバックしないようにします。

この属性は、実行する Java クラスの名前を指定します。 このテストを実行します。この設定が必要になることはほとんどありません。この引数を省略すると、 ターゲットの name と ソースルート相対パス。テストの実施場所が既知の ソースルート。test_class の場合、Bazel はエラーを報告します。 未設定。

JUnit3 の場合、テストクラスは junit.framework.TestCase を使用するか、一般公開されている 静的メソッド suite() メソッド junit.framework.Test(または Test のサブクラス)。 JUnit4 では、クラスにアノテーションを付ける必要があります。 org.junit.runner.RunWith

この属性を使用すると、複数の java_test ルールを 同じ Test を共有している (TestCaseTestSuite、...)。通常 追加情報が (jvm_flags=['-Dkey=value'] など)を使用して、 動作が異なるため、異なるアプリケーションを実行するなど、 テストのサブセットです。この属性を使用すると、 javatests ツリーの外側の Java テスト。

use_launcher

Boolean; optional; default is True

バイナリがカスタム ランチャーを使用するかどうか。

この属性を false に設定すると、 launcher 属性と関連 --java_launcher フラグ このターゲットでは無視されます。

use_testrunner

Boolean; optional; default is True

テストランナーを使用する(デフォルト) com.google.testing.junit.runner.BazelTestRunner など)クラスを Java プログラム用のメイン エントリ ポイントを作成し、テストクラスを提供します。 bazel.test_suite の値としてテストランナーに送信 システム プロパティ。 これを使用して、デフォルトの テストランナーを使用して java_test 個のルール、 java_binary ルールには使用しないでください。可能性は低い これを行うことをおすすめします1 回の使用: AllTest (データベースを設定するために)別のルールによって呼び出される できます)。AllTest ルールは java_binary として宣言する必要がありますが、 テストランナーをメインのエントリ ポイントとして使用します。 テストランナー クラスの名前は、main_class 属性でオーバーライドできます。

java_package_configuration

java_package_configuration(name, data, compatible_with, deprecation, distribs, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, visibility)

一連のパッケージに適用する構成。 構成は java_toolchain.javacopts 秒。

例:

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",
    ]
)

引数

属性
name

Name; required

このターゲットの一意の名前。

data

List of labels; optional

この構成で実行時に必要となるファイルのリスト。
javacopts

List of strings; optional

Java コンパイラ フラグ。
packages

List of labels; optional

package_group のセット 指定する必要があります。

java_plugin

java_plugin(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, visibility)

java_plugin は、Bazel で実行される Java コンパイラのプラグインを定義します。現在、 アノテーション プロセッサのみがサポートされています。java_library または java_binary ルールは、plugins を介してプラグインに依存することで、プラグインを実行できます。 属性です。java_library では、プラグインを自動的にエクスポートすることもできます。 使用することで、このコンテナが exported_plugins

暗黙的な出力ターゲット

  • libname.jar: Java アーカイブ。

引数は java_library と同じですが、 processor_class 引数を追加します。

引数

属性
name

Name; required

このターゲットの一意の名前。

deps

List of labels; optional

このライブラリにリンクするライブラリのリスト。 deps に関する一般的なコメントを見る: 一般的な属性は ほとんどのビルドルールに適用されます。

deps にリストされている java_library ルールによってビルドされた JAR がオンになります このルールのコンパイル時のクラスパス。さらに、これらのレイヤの推移的クロージングは、 depsruntime_depsexports は、 ランタイム クラスパスを指定します。

一方、data 属性のターゲットは runfile に含まれますが、 コンパイル時クラスパスにもランタイムクラスパスにもないからです。

srcs

List of labels; optional

ターゲットを作成するために処理されるソースファイルのリスト。 この属性はほとんどの場合必須です。下記の例外を参照してください。

.java 型のソースファイルはコンパイルされます。生成された .java ファイルには、生成ルールの名前を入力することをおすすめします。 ファイル自体の名前ではなく、ここに入力します。これにより 可読性が向上するだけでなく これにより、将来の変更に対するルールの復元性が向上します。つまり、生成ルールによって 1 か所修正するだけで済みます。outs 表示されます。deps に生成ルールを記載しないでください NoOps です

.srcjar 型のソースファイルは、展開されてコンパイルされます。(これは、 genrule で一連の .java ファイルを生成する必要があります)。

ルール: ルール(通常は genrule または filegroup)が ソース ファイルと同じ方法で使用されます。 できます。

ほとんどの場合、この引数は必須ですが、 main_class 属性では、 クラスに付けるか、runtime_deps 引数を指定します。

data

List of labels; optional

実行時にこのライブラリが必要とするファイルのリスト。 data に関する一般的なコメントを見る: 一般的な属性は ほとんどのビルドルールに適用されます。

java_library をビルドする際、Bazel はこれらのファイルをどこにも配置しません。もし data ファイルは生成されたファイルであり、Bazel によって生成されます。モデルを この java_library Bazel のコピーまたはリンクに依存するテスト data ファイルを runfiles 領域に配置します。

resources

List of labels; optional

Java jar に含めるデータファイルのリスト。

リソースを指定すると、通常のリソースとともに jar にバンドルされます。 コンパイルによって生成された .class ファイル。Cloud Storage 内のリソースの場所は プロジェクト構造によって決まります。Bazel はまず、Maven の 標準のディレクトリ レイアウト (「src」ディレクトリの後に「resources」ディレクトリの孫が続く)そうでない場合は Bazel は、最上位にある「java」というディレクトリを探します。または「javatests」(つまり、 たとえば、リソースが <workspace root>/x/java/y/java/z にある場合、 リソースのパスは y/java/z になります。このヒューリスティックはオーバーライドできません ただし、resource_strip_prefix 属性を使用すると、 リソース ファイル用の代替ディレクトリです。

リソースには、ソースファイルまたは生成されたファイルを指定できます。

generates_api

Boolean; optional; default is False

この属性は、API コードを生成するアノテーション プロセッサを示します。

API 生成のアノテーション プロセッサを使用するルールの場合、 生成されたコードを参照できるのは、その依存関係が コンパイル アクションは、生成ルールの後にスケジュールされます。この 属性で Bazel に指示を与えて、 --java_header_compile が有効である。

警告: この属性はビルドに影響します 必要な場合にのみ使用してください。

javacopts

List of strings; optional

このライブラリの追加のコンパイラ オプション。 「変数を作成」による置換を適用し、 Bourne シェルのトークン化

これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。

Boolean; optional; default is False

このライブラリをコンパイルにのみ使用し、実行時は使用しないかどうか。 実行時にランタイム環境によってライブラリが提供される場合に便利です。例 その中には、IDE プラグイン用の IDE API や、あらゆるもの用の tools.jar があります。 パフォーマンスです

なお、neverlink = 1 を指定しても、コンパイラによるマテリアルのインライン化は防止されません。 Java で許可されているコンパイル ターゲットにこのライブラリから変換します。 言語仕様(例:Stringstatic final 定数 。そのため、推奨されるユースケースは、ランタイム ライブラリが これはコンパイル ライブラリと同じです。

ランタイム ライブラリがコンパイル ライブラリと異なる場合は、それが 違いは、JLS でコンパイラのインライン実行が禁止されている場所(およびインラインで宣言され、 リリースされます。

output_licenses

Licence type; optional

common attributes を参照してください。
plugins

List of labels; optional

コンパイル時に実行する Java コンパイラ プラグイン。 このルールでは、この属性で指定されたすべての java_plugin が実行されます。 構築します。ライブラリは、使用する依存関係からプラグインを継承し、 exported_plugins。リソース 生成 AI は、このルールの生成される jar に含められます。
processor_class

String; optional

プロセッサ クラスは、Java コンパイラが処理する必要のあるクラスの完全修飾型です。 アノテーション プロセッサへのエントリ ポイントとして使用します。指定しない場合、このルールは アノテーション プロセッサを Java コンパイラのアノテーション処理に関与させますが、 ランタイム クラスパスは引き続きコンパイラのアノテーション プロセッサ パスに含まれます。( 主に Google Kubernetes Engine で Error Prone プラグイン(読み込み) アノテーション プロセッサのパスから <ph type="x-smartling-placeholder"></ph> java.util.ServiceLoader.)
proguard_specs

List of labels; optional

ProGuard 仕様として使用されるファイル。 ここでは、Proguard で使用される一連の仕様について説明します。指定すると、 このライブラリに応じて、任意の android_binary ターゲットに追加されます。 ここに含めるファイルには、べき等ルール(-dontnote、-dontwarn、 -keep で始まるルールを定義します。その他のオプションは android_binary の proguard_specs: tautological 以外のマージを保証します。
resource_jars

List of labels; optional

非推奨: 代わりに java_import と deps または runtime_deps を使用してください。
resource_strip_prefix

String; optional

Java リソースから削除するパス接頭辞。

指定すると、このパス接頭辞が resources 内のすべてのファイルから削除されます 属性です。リソース ファイルがこのディレクトリにない場合はエラーになります。回答が「いいえ」の場合 が指定された場合(デフォルト)、リソース ファイルのパスは、 などのロジックをソースファイルの Java パッケージとして使用します。たとえば、 stuff/java/foo/bar/a.txt の所在地は foo/bar/a.txt です。

java_runtime

java_runtime(name, srcs, compatible_with, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_modules, licenses, restricted_to, tags, target_compatible_with, testonly, version, visibility)

Java ランタイムの構成を指定します。

例:

java_runtime(
    name = "jdk-9-ea+153",
    srcs = glob(["jdk9-ea+153/**"]),
    java_home = "jdk9-ea+153",
)

引数

属性
name

Name; required

このターゲットの一意の名前。

srcs

List of labels; optional

ランタイム内のすべてのファイル。
hermetic_srcs

List of labels; optional

密閉型のデプロイに必要なランタイム内のファイル。
java

Label; optional

Java 実行可能ファイルのパス。
java_home

String; optional

ランタイムのルートへのパス。 「メーカー」が条件あります。 このパスが絶対パスの場合、ルールは非密閉型の Java ランタイムを示し、 あります。その場合、srcs 属性と java 属性を空にする必要があります。
lib_modules

Label; optional

密閉型のデプロイに必要な lib/modules ファイル。
version

Integer; optional; default is 0

Java ランタイムの機能バージョン。つまり、 Runtime.version().feature()

java_toolchain

java_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_with, deprecation, deps_checker, distribs, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_workers, javacopts, jvm_opts, licenses, oneversion, oneversion_whitelist, package_configuration, proguard_allowlister, resourcejar, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, tools, turbine_data, turbine_jvm_opts, visibility, xlint)

Java コンパイラの設定を指定します。使用するツールチェーンは、 引数 --java_ツールチェーン を指定します。通常、このようなルールを作成すべきでないのは、 Java コンパイラを調整できます

簡単な例を次に示します。

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",
)

引数

属性
name

Name; required

このターゲットの一意の名前。

android_lint_data

List of labels; optional

android_lint_jvm_opts のラベル拡張に使用できるツールのラベル。
android_lint_jvm_opts

List of strings; optional

Android Lint を呼び出すときの JVM の引数のリスト。
android_lint_opts

List of strings; optional

Android Lint 引数のリスト。
android_lint_package_configuration

List of labels; optional

指定したパッケージ グループに適用する必要がある Android Lint 設定。
android_lint_runner

Label; optional

Android Lint ランナーのラベル(ある場合)。
bootclasspath

List of labels; optional

Java ターゲットの bootclasspath エントリ。javac の -bootclasspath フラグに対応します。
deps_checker

List of labels; optional

ImportDepsChecker デプロイ JAR のラベル。
forcibly_disable_header_compilation

Boolean; optional; default is False

--java_header_coding をオーバーライドして、 サポートします。JDK 7 Bazel。
genclass

List of labels; required

GenClass デプロイ JAR のラベル。
header_compiler

List of labels; optional

ヘッダー コンパイラのラベル。--java_header_compile が有効な場合は必須です。
header_compiler_direct

List of labels; optional

ダイレクト クラスパス アクションで使用せず、ヘッダー コンパイラの任意のラベル。 API 生成のアノテーション プロセッサが含まれます。

このツールはアノテーション処理をサポートしていません。

ijar

List of labels; required

ijar 実行可能ファイルのラベル。
jacocorunner

Label; optional

JacocoCoverageRunner デプロイ jar のラベル。
java_runtime

Label; required

このツールチェーンで使用する java_runtime。デフォルトは java_runtime 必要があります。
javabuilder

List of labels; required

JavaBuilder デプロイ JAR のラベル。
javabuilder_data

List of labels; optional

javabuilder_jvm_opts のラベル拡張に使用できるデータのラベル。
javabuilder_jvm_opts

List of strings; optional

JavaBuilder を呼び出すときの JVM の引数のリスト。
javac_supports_multiplex_workers

Boolean; optional; default is True

JavaBuilder が多重化永続ワーカーとしての実行をサポートしている場合は true、サポートしていない場合は false。
javac_supports_workers

Boolean; optional; default is True

JavaBuilder が永続ワーカーとしての実行をサポートしている場合は true、サポートしていない場合は false。
javacopts

List of strings; optional

Java コンパイラの追加引数のリスト。Java コンパイラ リファレンスの 使用可能な Java コンパイラ フラグの詳細なリストをご覧ください。
jvm_opts

List of strings; optional

Java コンパイラを呼び出すときの JVM の引数のリスト。Java SDK の 仮想マシンのドキュメントで、このオプションに使用できるフラグの詳細なリストを参照してください。
oneversion

Label; optional

1 つのバージョンの適用バイナリのラベル。
oneversion_whitelist

Label; optional

1 つのバージョンのホワイトリストのラベル。
package_configuration

List of labels; optional

指定したパッケージ グループに適用する必要がある構成。
proguard_allowlister

Label; optional; default is @bazel_tools//tools/jdk:proguard_whitelister

Proguard 許可リスト者のラベル。
resourcejar

List of labels; optional

リソース JAR ビルダー実行可能ファイルのラベル。
singlejar

List of labels; required

SingleJar デプロイ JAR のラベル。
source_version

String; optional

Java ソース バージョン(「6」や「7」)などです。どのコード構造セットが Java ソースコード内で使用できます。
target_version

String; optional

Java のターゲット バージョン(「6」や「7」)などです。どの Java ランタイムに対してクラスが ビルドする必要があります。
timezone_data

Label; optional

タイムゾーン データを含むリソース JAR のラベル。設定すると、タイムゾーン データが すべての java_binary ルールの暗黙的なランタイム依存関係。
tools

List of labels; optional

jvm_opts でのラベル拡張に使用できるツールのラベル。
turbine_data

List of labels; optional

turbine_jvm_opts でのラベル拡張に使用できるデータのラベル。
turbine_jvm_opts

List of strings; optional

タービン呼び出し時の JVM の引数のリスト。
xlint

List of strings; optional

デフォルトのリストに対して追加または削除する警告のリスト。名前の前にダッシュを付けます。 削除されます。詳細については、Javac の -Xlint オプションに関するドキュメントをご覧ください。