Java ルール

問題を報告 ソースを表示 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

ルール

java_binary

ルールソースを表示
java_binary(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, env, exec_compatible_with, exec_group_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, neverlink, output_licenses, package_metadata, plugins, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)

Java アーカイブ(「jar ファイル」)と、ルールと同じ名前のラッパー シェル スクリプトをビルドします。ラッパー シェル スクリプトは、バイナリが依存する各ライブラリの jar ファイルなどを含むクラスパスを使用します。ラッパー シェル スクリプトを実行すると、空でない JAVABIN 環境変数が、Bazel の --java_runtime_version フラグで指定されたバージョンよりも優先されます。

ラッパー スクリプトは、いくつかの固有のフラグを受け入れます。ラッパーで受け入れられる構成可能なフラグと環境変数のリストについては、java_stub_template.txt をご覧ください。

暗黙的な出力ターゲット

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

    ルールの <name>_deploy.jar ターゲットをビルドすると、java -jar コマンドまたはラッパー スクリプトの --singlejar オプションで実行できるマニフェストを含む自己完結型の jar ファイルが作成されます。ラッパー スクリプトは、JVM フラグとネイティブ ライブラリを読み込むオプションも渡すため、java -jar よりも推奨されます。

    デプロイ jar には、バイナリのラッパー スクリプトからクラスパスを先頭から末尾まで検索するクラスローダーによって検出されるすべてのクラスが含まれています。また、依存関係に必要なネイティブ ライブラリも含まれています。これらは実行時に JVM に自動的に読み込まれます。

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

  • name_deploy-src.jar: ターゲットの推移閉包から収集されたソースを含むアーカイブ。これらは、jar に一致するソース jar がない場合を除き、deploy.jar のクラスと一致します。

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

srcs のない java_binary ルールでは deps 属性は許可されていません。このようなルールには、runtime_deps によって提供される main_class が必要です。

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


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

名前(必須)

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

deps

ラベルのリスト。デフォルトは []

ターゲットにリンクされる他のライブラリのリスト。deps に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。
srcs

ラベルのリスト。デフォルトは []

ターゲットの作成時に処理されるソースファイルのリスト。この属性はほぼ常に必要です。例外については下記をご覧ください。

.java タイプのソースファイルがコンパイルされます。生成された .java ファイルの場合、通常はファイル名ではなく、生成ルールの名前をここに配置することをおすすめします。これにより、可読性が向上するだけでなく、将来の変更に対するルールの回復力も高まります。生成ルールが将来的に異なるファイルを生成する場合、修正する必要があるのは、生成ルールの outs の 1 か所だけです。生成ルールは no-op であるため、deps にリストしないでください。

タイプ .srcjar のソースファイルが解凍され、コンパイルされます。(これは、genrule で .java ファイルのセットを生成する必要がある場合に便利です)。

ルール: ルール(通常は genrule または filegroup)が上記のいずれかのファイルを生成する場合、ソースファイルの説明と同じ方法で使用されます。

この引数は、main_class 属性でランタイム クラスパスのクラスを指定する場合、または runtime_deps 引数を指定する場合を除き、ほとんどの場合必要です。

data

ラベルのリスト。デフォルトは []

このライブラリが実行時に必要とするファイルのリスト。data に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。
resources

ラベルのリスト。デフォルトは []

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

リソースは、ソースファイルまたは生成されたファイルです。

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

add_exports

文字列のリスト。デフォルトは [] です。

このライブラリに、指定された module または package へのアクセスを許可します。

これは、javac と JVM の --add-exports= フラグに対応します。

add_opens

文字列のリスト。デフォルトは [] です。

このライブラリが指定された module または package にリフレクションでアクセスできるようにします。

これは、javac と JVM の --add-opens= フラグに対応します。

bootclasspath

ラベル。デフォルトは None です。

制限付き API、使用しないでください!
classpath_resources

ラベルのリスト。デフォルトは []

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

java ツリーのルートに配置する必要があるリソースのリスト。この属性の唯一の目的は、リソースがクラスパスで "myconfig.xml" として見つかることを必要とするサードパーティ ライブラリをサポートすることです。名前空間の競合の危険性があるため、バイナリでのみ許可され、ライブラリでは許可されません。

create_executable

ブール値。デフォルトは True です。

非推奨。代わりに java_single_jar を使用してください。
deploy_env

ラベルのリスト。デフォルトは []

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

文字列のリスト。デフォルトは [] です。

*_deploy.jar ターゲット用に生成された META-INF/manifest.mf ファイルに追加する行のリスト。この属性の内容は、「変数の作成」による置換の対象にはなりません。
javacopts

文字列のリスト。デフォルトは [] です。

このバイナリの追加のコンパイラ オプション。「変数を作成」の置換と Bourne シェルのトークン化の対象となります。

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

jvm_flags

文字列のリスト。デフォルトは [] です。

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

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

この属性は *_deploy.jar 出力には影響しません。

launcher

ラベル。デフォルトは None です。

JDK に含まれる通常の bin/java プログラムの代わりに、Java プログラムの実行に使用するバイナリを指定します。ターゲットは cc_binary である必要があります。 Java Invocation API を実装する cc_binary は、この属性の値として指定できます。

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

関連する --java_launcher Bazel フラグは、launcher 属性を指定していない java_binary ターゲットと java_test ターゲットにのみ影響します。

ネイティブ(C++、SWIG、JNI)の依存関係は、JDK ランチャーを使用しているか、別のランチャーを使用しているかによって、ビルド方法が異なります。

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

デフォルトの JDK ランチャー以外のランチャーを使用すると、*_deploy.jar 出力の形式が変わります。詳しくは、メインの java_binary ドキュメントをご覧ください。

main_class

文字列。デフォルトは "" です。

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

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

ブール値。デフォルトは False です。

plugins

ラベルのリスト。デフォルトは []

コンパイル時に実行する Java コンパイラ プラグイン。この属性で指定されたすべての java_plugin は、このルールがビルドされるたびに実行されます。ライブラリは、exported_plugins を使用する依存関係からプラグインを継承することもできます。プラグインによって生成されたリソースは、このルールの結果の jar に含まれます。
resource_strip_prefix

文字列。デフォルトは "" です。

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

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

runtime_deps

ラベルのリスト。デフォルトは []

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

整数。デフォルトは -1 です。

ビルド情報をバイナリにエンコードするかどうか。有効な値:
  • stamp = 1: --nostamp ビルドでも、常にビルド情報をバイナリにスタンプします。この設定は避けるべきです。バイナリとそれに依存するダウンストリーム アクションのリモート キャッシュを無効にする可能性があるためです。
  • stamp = 0: ビルド情報を常に定数値に置き換えます。これにより、ビルド結果のキャッシュ保存が適切に行われます。
  • stamp = -1: ビルド情報のエンベディングは --[no]stamp フラグで制御されます。

依存関係が変更されない限り、スタンプ付きバイナリは再構築されません。

use_launcher

ブール値。デフォルトは True です。

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

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

use_testrunner

ブール値。デフォルトは 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, add_exports, add_opens, compatible_with, constraints, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, package_metadata, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, toolchains, visibility)

このルールにより、コンパイル済みの .jar ファイルを java_library ルールと java_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

名前(必須)

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

deps

ラベルのリスト。デフォルトは []

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

ラベルのリスト。デフォルトは []

このルールが実行時に必要とするファイルのリスト。
add_exports

文字列のリスト。デフォルトは [] です。

このライブラリに、指定された module または package へのアクセスを許可します。

これは、javac と JVM の --add-exports= フラグに対応します。

add_opens

文字列のリスト。デフォルトは [] です。

このライブラリが指定された module または package にリフレクションでアクセスできるようにします。

これは、javac と JVM の --add-opens= フラグに対応します。

constraints

文字列のリスト。デフォルトは [] です。

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

ラベルのリスト。デフォルトは []

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

ラベルのリスト。必須

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

ブール値。デフォルトは False です。

このライブラリはコンパイルにのみ使用し、実行時には使用しないでください。実行時にライブラリがランタイム環境によって提供される場合に便利です。このようなライブラリの例としては、IDE プラグイン用の IDE API や、標準 JDK で実行されるもの用の tools.jar などがあります。
proguard_specs

ラベルのリスト。デフォルトは []

Proguard 仕様として使用するファイル。これらは、Proguard で使用される仕様のセットを記述します。指定すると、このライブラリに依存するすべての android_binary ターゲットに追加されます。ここに含めるファイルには、べき等ルール(-dontnote、-dontwarn、assumenosideeffects、-keep で始まるルール)のみを含める必要があります。他のオプションは、android_binary の proguard_specs にのみ表示できます。これは、トートロジーでないマージを保証するためです。
runtime_deps

ラベルのリスト。デフォルトは []

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

ラベル。デフォルトは None です。

コンパイル済み JAR ファイルのソースコードを含む JAR ファイル。

java_library

ルールソースを表示
java_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, package_metadata, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)

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

暗黙的な出力

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

引数

属性
name

名前(必須)

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

deps

ラベルのリスト。デフォルトは []

このライブラリにリンクするライブラリのリスト。deps に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。

deps にリストされている java_library ルールによってビルドされた jar は、このルールのコンパイル時クラスパスに配置されます。さらに、depsruntime_depsexports の推移閉包はランタイム クラスパスにあります。

一方、data 属性のターゲットは、ランファイルには含まれますが、コンパイル時または実行時のクラスパスには含まれません。

srcs

ラベルのリスト。デフォルトは []

ターゲットの作成時に処理されるソースファイルのリスト。この属性はほぼ常に必要です。例外については下記をご覧ください。

.java タイプのソースファイルがコンパイルされます。生成された .java ファイルの場合、通常はファイル名ではなく、生成ルールの名前をここに配置することをおすすめします。これにより、可読性が向上するだけでなく、将来の変更に対するルールの回復力も高まります。生成ルールが将来的に異なるファイルを生成する場合、修正する必要があるのは、生成ルールの outs の 1 か所だけです。生成ルールは no-op であるため、deps にリストしないでください。

タイプ .srcjar のソースファイルが解凍され、コンパイルされます。(これは、genrule で .java ファイルのセットを生成する必要がある場合に便利です)。

ルール: ルール(通常は genrule または filegroup)が上記のいずれかのファイルを生成する場合、ソースファイルの説明と同じ方法で使用されます。

.properties タイプのソースファイルはリソースとして扱われます。

上記のファイル形式のファイルが 1 つ以上存在する場合、他のファイルはすべて無視されます。それ以外の場合は、エラーが発生します。

runtime_deps 引数を指定する場合を除き、この引数はほとんどの場合必須です。

data

ラベルのリスト。デフォルトは []

このライブラリが実行時に必要とするファイルのリスト。data に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。

java_library をビルドするとき、Bazel はこれらのファイルをどこにも配置しません。data ファイルが生成ファイルの場合、Bazel はそれらを生成します。この java_library に依存するテストをビルドすると、Bazel は data ファイルを runfiles 領域にコピーまたはリンクします。

resources

ラベルのリスト。デフォルトは []

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

リソースは、ソースファイルまたは生成されたファイルです。

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

add_exports

文字列のリスト。デフォルトは [] です。

このライブラリに、指定された module または package へのアクセスを許可します。

これは、javac と JVM の --add-exports= フラグに対応します。

add_opens

文字列のリスト。デフォルトは [] です。

このライブラリが指定された module または package にリフレクションでアクセスできるようにします。

これは、javac と JVM の --add-opens= フラグに対応します。

bootclasspath

ラベル。デフォルトは None です。

制限付き API、使用しないでください!
exported_plugins

ラベルのリスト。デフォルトは []

このライブラリに直接依存するライブラリにエクスポートする java_plugin のリスト(アノテーション プロセッサなど)。

指定された java_plugin のリストは、このライブラリに直接依存するすべてのライブラリに適用されます。これは、そのライブラリが plugins でこれらのラベルを明示的に宣言した場合と同じです。

exports

ラベルのリスト。デフォルトは []

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

ここにルールをリストすると、親がこれらのルールに明示的に依存しているかのように、親ルールでこれらのルールを使用できるようになります。これは、通常の(エクスポートされていない)deps には当てはまりません。

概要: X というルールは、deps エッジで始まり、その後に 0 個以上の exports エッジが続く依存関係パスが存在する場合、Y のコードにアクセスできます。この点を説明する例をいくつか見てみましょう。

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

エクスポートされたライブラリのクロージャは、すべての直接の親ルールで使用できます。少し異なる例を考えてみましょう。A は B に依存し、B は C と D に依存し、C はエクスポートしますが D はエクスポートしません。これで、A は C にアクセスできますが、D にはアクセスできません。ここで、C と D がそれぞれ C' と D' というライブラリをエクスポートした場合、A は C' にはアクセスできますが、D' にはアクセスできません。

重要: エクスポートされたルールは通常の依存関係ではありません。前の例に沿って説明すると、B が C をエクスポートし、C も使用したい場合は、独自の deps にも C をリストする必要があります。

javabuilder_jvm_flags

文字列のリスト。デフォルトは [] です。

制限付き API、使用しないでください!
javacopts

文字列のリスト。デフォルトは [] です。

このライブラリの追加のコンパイラ オプション。「変数を作成」の置換と Bourne シェルのトークン化の対象となります。

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

ブール値。デフォルトは False です。

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

neverlink = True は、Java 言語仕様で許可されているとおり(例: String またはプリミティブ型の static final 定数)。したがって、ランタイム ライブラリがコンパイル ライブラリと同一である場合が、推奨されるユースケースです。

ランタイム ライブラリがコンパイル ライブラリと異なる場合、JLS がコンパイラによるインライン化を禁止している箇所でのみ異なるようにする必要があります(これは JLS の将来のすべてのバージョンで保持される必要があります)。

plugins

ラベルのリスト。デフォルトは []

コンパイル時に実行する Java コンパイラ プラグイン。この属性で指定されたすべての java_plugin は、このルールがビルドされるたびに実行されます。ライブラリは、exported_plugins を使用する依存関係からプラグインを継承することもできます。プラグインによって生成されたリソースは、このルールの結果の jar に含まれます。
proguard_specs

ラベルのリスト。デフォルトは []

Proguard 仕様として使用するファイル。これらは、Proguard で使用される仕様のセットを記述します。指定すると、このライブラリに依存するすべての android_binary ターゲットに追加されます。ここに含めるファイルには、べき等ルール(-dontnote、-dontwarn、assumenosideeffects、-keep で始まるルール)のみを含める必要があります。他のオプションは、android_binary の proguard_specs にのみ表示できます。これは、トートロジーでないマージを保証するためです。
resource_strip_prefix

文字列。デフォルトは "" です。

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

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

runtime_deps

ラベルのリスト。デフォルトは []

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

java_test

ルールソースを表示
java_test(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, neverlink, package_metadata, plugins, 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 テストをコンパイルします。テストは、テストコードのバイナリ ラッパーです。コンパイルされるメインクラスの代わりに、テストランナーのメインメソッドが呼び出されます。

暗黙的な出力ターゲット

  • name.jar: Java アーカイブ。
  • name_deploy.jar: デプロイに適した Java アーカイブ。(明示的にリクエストされた場合にのみビルドされます)。詳細については、java_binary からの name_deploy.jar 出力の説明をご覧ください。

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

名前(必須)

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

deps

ラベルのリスト。デフォルトは []

ターゲットにリンクされる他のライブラリのリスト。deps に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。
srcs

ラベルのリスト。デフォルトは []

ターゲットの作成時に処理されるソースファイルのリスト。この属性はほぼ常に必要です。例外については下記をご覧ください。

.java タイプのソースファイルがコンパイルされます。生成された .java ファイルの場合、通常はファイル名ではなく、生成ルールの名前をここに配置することをおすすめします。これにより、可読性が向上するだけでなく、将来の変更に対するルールの回復力も高まります。生成ルールが将来的に異なるファイルを生成する場合、修正する必要があるのは、生成ルールの outs の 1 か所だけです。生成ルールは no-op であるため、deps にリストしないでください。

タイプ .srcjar のソースファイルが解凍され、コンパイルされます。(これは、genrule で .java ファイルのセットを生成する必要がある場合に便利です)。

ルール: ルール(通常は genrule または filegroup)が上記のいずれかのファイルを生成する場合、ソースファイルの説明と同じ方法で使用されます。

この引数は、main_class 属性でランタイム クラスパスのクラスを指定する場合、または runtime_deps 引数を指定する場合を除き、ほとんどの場合必要です。

data

ラベルのリスト。デフォルトは []

このライブラリが実行時に必要とするファイルのリスト。data に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。
resources

ラベルのリスト。デフォルトは []

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

リソースは、ソースファイルまたは生成されたファイルです。

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

add_exports

文字列のリスト。デフォルトは [] です。

このライブラリに、指定された module または package へのアクセスを許可します。

これは、javac と JVM の --add-exports= フラグに対応します。

add_opens

文字列のリスト。デフォルトは [] です。

このライブラリが指定された module または package にリフレクションでアクセスできるようにします。

これは、javac と JVM の --add-opens= フラグに対応します。

bootclasspath

ラベル。デフォルトは None です。

制限付き API、使用しないでください!
classpath_resources

ラベルのリスト。デフォルトは []

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

java ツリーのルートに配置する必要があるリソースのリスト。この属性の唯一の目的は、リソースがクラスパスで "myconfig.xml" として見つかることを必要とするサードパーティ ライブラリをサポートすることです。名前空間の競合の危険性があるため、バイナリでのみ許可され、ライブラリでは許可されません。

create_executable

ブール値。デフォルトは True です。

非推奨。代わりに java_single_jar を使用してください。
deploy_manifest_lines

文字列のリスト。デフォルトは [] です。

*_deploy.jar ターゲット用に生成された META-INF/manifest.mf ファイルに追加する行のリスト。この属性の内容は、「変数の作成」による置換の対象にはなりません。
javacopts

文字列のリスト。デフォルトは [] です。

このバイナリの追加のコンパイラ オプション。「変数を作成」の置換と Bourne シェルのトークン化の対象となります。

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

jvm_flags

文字列のリスト。デフォルトは [] です。

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

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

この属性は *_deploy.jar 出力には影響しません。

launcher

ラベル。デフォルトは None です。

JDK に含まれる通常の bin/java プログラムの代わりに、Java プログラムの実行に使用するバイナリを指定します。ターゲットは cc_binary である必要があります。 Java Invocation API を実装する cc_binary は、この属性の値として指定できます。

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

関連する --java_launcher Bazel フラグは、launcher 属性を指定していない java_binary ターゲットと java_test ターゲットにのみ影響します。

ネイティブ(C++、SWIG、JNI)の依存関係は、JDK ランチャーを使用しているか、別のランチャーを使用しているかによって、ビルド方法が異なります。

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

デフォルトの JDK ランチャー以外のランチャーを使用すると、*_deploy.jar 出力の形式が変わります。詳しくは、メインの java_binary ドキュメントをご覧ください。

main_class

文字列。デフォルトは "" です。

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

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

ブール値。デフォルトは False です。

plugins

ラベルのリスト。デフォルトは []

コンパイル時に実行する Java コンパイラ プラグイン。この属性で指定されたすべての java_plugin は、このルールがビルドされるたびに実行されます。ライブラリは、exported_plugins を使用する依存関係からプラグインを継承することもできます。プラグインによって生成されたリソースは、このルールの結果の jar に含まれます。
resource_strip_prefix

文字列。デフォルトは "" です。

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

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

runtime_deps

ラベルのリスト。デフォルトは []

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

整数。デフォルトは 0 です。

ビルド情報をバイナリにエンコードするかどうか。有効な値:
  • stamp = 1: --nostamp ビルドでも、常にビルド情報をバイナリにスタンプします。この設定は避けるべきです。バイナリとそれに依存するダウンストリーム アクションのリモート キャッシュを無効にする可能性があるためです。
  • stamp = 0: ビルド情報を常に定数値に置き換えます。これにより、ビルド結果のキャッシュ保存が適切に行われます。
  • stamp = -1: ビルド情報のエンベディングは --[no]stamp フラグで制御されます。

依存関係が変更されない限り、スタンプ付きバイナリは再構築されません。

test_class

文字列。デフォルトは "" です。

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

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

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

JUnit3 の場合、テストクラスは junit.framework.TestCase のサブクラスであるか、junit.framework.Test(または Test のサブクラス)を返すパブリック静的 suite() メソッドを持つ必要があります。

この属性により、複数の java_test ルールが同じ TestTestCaseTestSuite など)を共有できます。通常、追加情報(jvm_flags=['-Dkey=value'] など)が渡され、テストの異なるサブセットを実行するなど、ケースごとに動作が異なります。この属性を使用すると、javatests ツリーの外部で Java テストを使用することもできます。

use_launcher

ブール値。デフォルトは True です。

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

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

use_testrunner

ブール値。デフォルトは 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, exec_compatible_with, exec_group_compatible_with, exec_properties, features, javacopts, output_licenses, package_metadata, packages, restricted_to, system, tags, target_compatible_with, testonly, toolchains, 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

名前(必須)

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

data

ラベルのリスト。デフォルトは []

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

文字列のリスト。デフォルトは [] です。

Java コンパイラ フラグ。
output_licenses

文字列のリスト。デフォルトは [] です。

packages

ラベルのリスト。デフォルトは []

構成を適用する package_group のセット。
system

ラベル。デフォルトは None です。

javac の --system フラグに対応します。

java_plugin

ルールソースを表示
java_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, package_metadata, plugins, processor_class, proguard_specs, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

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

暗黙的な出力ターゲット

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

引数は、processor_class 引数と generates_api 引数が追加されている点を除き、java_library() の引数のサブセット(セマンティクスは同じ)です。

引数

属性
name

名前(必須)

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

deps

ラベルのリスト。デフォルトは []

このライブラリにリンクするライブラリのリスト。deps に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。

deps にリストされている java_library ルールによってビルドされた jar は、このルールのコンパイル時クラスパスに配置されます。さらに、depsruntime_depsexports の推移閉包はランタイム クラスパスにあります。

一方、data 属性のターゲットは、ランファイルには含まれますが、コンパイル時または実行時のクラスパスには含まれません。

srcs

ラベルのリスト。デフォルトは []

ターゲットの作成時に処理されるソースファイルのリスト。この属性はほぼ常に必要です。例外については下記をご覧ください。

.java タイプのソースファイルがコンパイルされます。生成された .java ファイルの場合、通常はファイル名ではなく、生成ルールの名前をここに配置することをおすすめします。これにより、可読性が向上するだけでなく、将来の変更に対するルールの回復力も高まります。生成ルールが将来的に異なるファイルを生成する場合、修正する必要があるのは、生成ルールの outs の 1 か所だけです。生成ルールは no-op であるため、deps にリストしないでください。

タイプ .srcjar のソースファイルが解凍され、コンパイルされます。(これは、genrule で .java ファイルのセットを生成する必要がある場合に便利です)。

ルール: ルール(通常は genrule または filegroup)が上記のいずれかのファイルを生成する場合、ソースファイルの説明と同じ方法で使用されます。

.properties タイプのソースファイルはリソースとして扱われます。

上記のファイル形式のファイルが 1 つ以上存在する場合、他のファイルはすべて無視されます。それ以外の場合は、エラーが発生します。

runtime_deps 引数を指定する場合を除き、この引数はほとんどの場合必須です。

data

ラベルのリスト。デフォルトは []

このライブラリが実行時に必要とするファイルのリスト。data に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。

java_library をビルドするとき、Bazel はこれらのファイルをどこにも配置しません。data ファイルが生成ファイルの場合、Bazel はそれらを生成します。この java_library に依存するテストをビルドすると、Bazel は data ファイルを runfiles 領域にコピーまたはリンクします。

resources

ラベルのリスト。デフォルトは []

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

リソースは、ソースファイルまたは生成されたファイルです。

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

add_exports

文字列のリスト。デフォルトは [] です。

このライブラリに、指定された module または package へのアクセスを許可します。

これは、javac と JVM の --add-exports= フラグに対応します。

add_opens

文字列のリスト。デフォルトは [] です。

このライブラリが指定された module または package にリフレクションでアクセスできるようにします。

これは、javac と JVM の --add-opens= フラグに対応します。

bootclasspath

ラベル。デフォルトは None です。

制限付き API、使用しないでください!
generates_api

ブール値。デフォルトは False です。

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

ルールが API 生成アノテーション プロセッサを使用する場合、そのルールに依存する他のルールは、生成ルールの後にコンパイル アクションがスケジュールされている場合にのみ、生成されたコードを参照できます。この属性は、--java_header_compilation が有効になっている場合にスケジューリング制約を導入するように Bazel に指示します。

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

javabuilder_jvm_flags

文字列のリスト。デフォルトは [] です。

制限付き API、使用しないでください!
javacopts

文字列のリスト。デフォルトは [] です。

このライブラリの追加のコンパイラ オプション。「変数を作成」の置換と Bourne シェルのトークン化の対象となります。

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

ブール値。デフォルトは False です。

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

neverlink = True は、Java 言語仕様で許可されているとおり(例: String またはプリミティブ型の static final 定数)。したがって、ランタイム ライブラリがコンパイル ライブラリと同一である場合が、推奨されるユースケースです。

ランタイム ライブラリがコンパイル ライブラリと異なる場合、JLS がコンパイラによるインライン化を禁止している箇所でのみ異なるようにする必要があります(これは JLS の将来のすべてのバージョンで保持される必要があります)。

output_licenses

文字列のリスト。デフォルトは [] です。

plugins

ラベルのリスト。デフォルトは []

コンパイル時に実行する Java コンパイラ プラグイン。この属性で指定されたすべての java_plugin は、このルールがビルドされるたびに実行されます。ライブラリは、exported_plugins を使用する依存関係からプラグインを継承することもできます。プラグインによって生成されたリソースは、このルールの結果の jar に含まれます。
processor_class

文字列。デフォルトは "" です。

プロセッサ クラスは、Java コンパイラがアノテーション プロセッサのエントリ ポイントとして使用するクラスの完全修飾型です。指定しない場合、このルールは Java コンパイラのアノテーション処理にアノテーション プロセッサを提供しませんが、そのランタイム クラスパスはコンパイラのアノテーション プロセッサ パスに含まれます。(これは主に Error Prone プラグインで使用されることを想定しています。このプラグインは java.util.ServiceLoader を使用してアノテーション プロセッサ パスから読み込まれます)。
proguard_specs

ラベルのリスト。デフォルトは []

Proguard 仕様として使用するファイル。これらは、Proguard で使用される仕様のセットを記述します。指定すると、このライブラリに依存するすべての android_binary ターゲットに追加されます。ここに含めるファイルには、べき等ルール(-dontnote、-dontwarn、assumenosideeffects、-keep で始まるルール)のみを含める必要があります。他のオプションは、android_binary の proguard_specs にのみ表示できます。これは、トートロジーでないマージを保証するためです。
resource_strip_prefix

文字列。デフォルトは "" です。

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

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

java_runtime

ルールソースを表示
java_runtime(name, srcs, compatible_with, default_cds, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, version, visibility)

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

例:



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


引数

属性
name

名前(必須)

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

srcs

ラベルのリスト。デフォルトは []

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

ラベル。デフォルトは None です。

密閉型 java_runtime のデフォルトの CDS アーカイブ。java_binary ターゲットで hermetic が有効になっている場合、java_runtime デフォルト CDS は hermetic デプロイ JAR にパッケージ化されます。
hermetic_srcs

ラベルのリスト。デフォルトは []

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

ラベルのリスト。デフォルトは []

密閉型デプロイのランチャーと静的にリンクされるライブラリ
java

ラベル。デフォルトは None です。

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

文字列。デフォルトは "" です。

ランタイムのルートへのパス。「Make」変数の置換の対象となります。このパスが絶対パスの場合、ルールは既知のパスを持つ非ハーメチックな Java ランタイムを示します。その場合、srcs 属性と java 属性は空にする必要があります。
lib_ct_sym

ラベル。デフォルトは None です。

--release でのコンパイルに必要な lib/ct.sym ファイル。指定されておらず、srcs にパスが /lib/ct.sym で終わるファイルが 1 つだけある場合、そのファイルが使用されます。
lib_modules

ラベル。デフォルトは None です。

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

文字列のリスト。デフォルトは [] です。

version

整数。デフォルトは 0 です。

Java ランタイムの機能バージョン。つまり、Runtime.version().feature() によって返される整数です。

java_single_jar

ルールソースを表示
java_single_jar(name, deps, compatible_with, compress, deploy_env, deploy_manifest_lines, deprecation, exclude_build_data, exec_compatible_with, exec_group_compatible_with, exec_properties, features, multi_release, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Java の依存関係と jar ファイルを 1 つの jar に収集します。 `java_single_jar` は、Java の依存関係と jar ファイルを 1 つの jar に収集します。これは、実行可能ファイルに関連するすべてのものが無効になっている java_binary に似ており、java_binary の「デプロイ jar ハック」の代替手段となります。## 例 ```skylark load("//tools/build_defs/java_single_jar:java_single_jar.bzl", "java_single_jar") java_single_jar( name = "my_single_jar", deps = [ "//java/com/google/foo", "//java/com/google/bar", ], ) ``` 出力: {name}.jar: すべての入力を含む単一の jar。

引数

属性
name

名前(必須)

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

deps

ラベルのリスト。デフォルトは []

推移的依存関係を収集する Java ターゲット(java_import や java_library など)。ランタイム依存関係は、deps、exports、runtime_deps を介して収集されます。リソースも収集されます。ネイティブ cc_library または java_wrap_cc の依存関係は、そうではありません。
compress

文字列。デフォルトは "preserve" です。

常に圧縮するか(「yes」)、常に保存するか(「no」)、変更せずに渡すか(「preserve」)。デフォルトは「preserve」で、最も効率的なオプションです。拡大または縮小するための追加の作業は行われません。
deploy_env

ラベルのリスト。デフォルトは []

このバイナリのデプロイ環境を表す `java_binary` または `java_single_jar` ターゲットのリスト。別の `java_binary` によって読み込まれるプラグインをビルドするときに、この属性を設定します。`deploy_env` 依存関係は、このルールによってビルドされた jar から除外されます。
deploy_manifest_lines

文字列のリスト。デフォルトは [] です。

META-INF/manifest.mf ファイルに追加する行のリスト。
exclude_build_data

ブール値。デフォルトは True です。

デフォルトで生成される build-data.properties ファイルを省略するかどうか。
multi_release

ブール値。デフォルトは True です。

マルチリリース出力 jar を有効にするかどうか。

java_toolchain

ルールソースを表示
java_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_javacopts, compatible_with, deprecation, deps_checker, exec_compatible_with, exec_group_compatible_with, exec_properties, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_builtin_processors, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_worker_cancellation, javac_supports_worker_multiplex_sandboxing, javac_supports_workers, javacopts, jspecify_implicit_deps, jspecify_javacopts, jspecify_packages, jspecify_processor, jspecify_processor_class, jspecify_stubs, jvm_opts, licenses, misc, oneversion, oneversion_allowlist, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, package_metadata, proguard_allowlister, reduced_classpath_incompatible_processors, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, toolchains, tools, turbine_data, turbine_jvm_opts, visibility, xlint)

Java コンパイラの構成を指定します。使用するツールチェーンは、--java_toolchain 引数で変更できます。通常、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

名前(必須)

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

android_lint_data

ラベルのリスト。デフォルトは []

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

文字列のリスト。デフォルトは [] です。

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

文字列のリスト。デフォルトは [] です。

Android Lint 引数のリスト。
android_lint_package_configuration

ラベルのリスト。デフォルトは []

指定されたパッケージ グループに適用される Android Lint 構成。
android_lint_runner

ラベル。デフォルトは None です。

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

ラベルのリスト。デフォルトは []

Java ターゲットのブートクラスパス エントリ。javac の -bootclasspath フラグに対応します。
compatible_javacopts

null。デフォルトは {} です。

内部 API。使用しないでください。
deps_checker

ラベル。デフォルトは None です。

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

ブール値。デフォルトは False です。

--java_header_compilation をオーバーライドして、JDK 7 Bazel など、ヘッダー コンパイルをサポートしていないプラットフォームでヘッダー コンパイルを無効にします。
genclass

ラベル。デフォルトは None です。

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

ラベル。デフォルトは None です。

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

文字列のリスト。デフォルトは [] です。

内部 API。使用しないでください。
header_compiler_direct

ラベル。デフォルトは None です。

API 生成アノテーション プロセッサを含まない直接クラスパス アクションに使用するヘッダー コンパイラの省略可能なラベル。

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

ijar

ラベル。デフォルトは None です。

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

ラベル。デフォルトは None です。

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

ラベル。デフォルトは None です。

このツールチェーンで使用する java_runtime。実行構成では、デフォルトで java_runtime に設定されます。
javabuilder

ラベル。デフォルトは None です。

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

ラベルのリスト。デフォルトは []

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

文字列のリスト。デフォルトは [] です。

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

ブール値。デフォルトは True です。

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

ブール値。デフォルトは True です。

JavaBuilder が永続ワーカーのキャンセルをサポートしている場合は true、サポートしていない場合は false。
javac_supports_worker_multiplex_sandboxing

ブール値。デフォルトは False です。

JavaBuilder がサンドボックス化された多重永続ワーカーとして実行をサポートしている場合は true、サポートしていない場合は false。
javac_supports_workers

ブール値。デフォルトは True です。

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

文字列のリスト。デフォルトは [] です。

Java コンパイラの追加引数のリスト。使用可能な Java コンパイラ フラグの完全なリストについては、Java コンパイラのドキュメントをご覧ください。
jspecify_implicit_deps

ラベル。デフォルトは None です。

試験運用中。使用しないでください。
jspecify_javacopts

文字列のリスト。デフォルトは [] です。

試験運用中。使用しないでください。
jspecify_packages

ラベルのリスト。デフォルトは []

試験運用中。使用しないでください。
jspecify_processor

ラベル。デフォルトは None です。

試験運用中。使用しないでください。
jspecify_processor_class

文字列。デフォルトは "" です。

試験運用中。使用しないでください。
jspecify_stubs

ラベルのリスト。デフォルトは []

試験運用中。使用しないでください。
jvm_opts

文字列のリスト。デフォルトは [] です。

Java コンパイラを呼び出すときの JVM の引数のリスト。このオプションで使用できるフラグの完全なリストについては、Java 仮想マシンのドキュメントをご覧ください。
misc

文字列のリスト。デフォルトは [] です。

非推奨: 代わりに javacopts を使用してください
oneversion

ラベル。デフォルトは None です。

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

ラベル。デフォルトは None です。

1 つのバージョンの許可リストのラベル。
oneversion_allowlist_for_tests

ラベル。デフォルトは None です。

テスト用の 1 つのバージョンの許可リストのラベル。
oneversion_whitelist

ラベル。デフォルトは None です。

非推奨: 代わりに oneversion_allowlist を使用してください
package_configuration

ラベルのリスト。デフォルトは []

指定されたパッケージ グループに適用される構成。
proguard_allowlister

ラベル。デフォルトは "@bazel_tools//tools/jdk:proguard_whitelister" です。

Proguard 許可リストのラベル。
reduced_classpath_incompatible_processors

文字列のリスト。デフォルトは [] です。

内部 API。使用しないでください。
singlejar

ラベル。デフォルトは None です。

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

文字列。デフォルトは "" です。

Java ソースのバージョン(「6」または「7」)。Java ソースコードで許可されるコード構造のセットを指定します。
target_version

文字列。デフォルトは "" です。

Java ターゲット バージョン(例: 「6」または「7」)。クラスをビルドする Java ランタイムを指定します。
timezone_data

ラベル。デフォルトは None です。

タイムゾーン データを含むリソース jar のラベル。設定されている場合、タイムゾーン データはすべての java_binary ルールの暗黙的なランタイム依存関係として追加されます。
tools

ラベルのリスト。デフォルトは []

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

ラベルのリスト。デフォルトは []

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

文字列のリスト。デフォルトは [] です。

turbine を呼び出すときの JVM の引数のリスト。
xlint

文字列のリスト。デフォルトは [] です。

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