ルール
- java_binary
 - java_import
 - java_library
 - java_test
 - java_package_configuration
 - java_plugin
 - java_runtime
 - java_toolchain
 
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, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, neverlink, output_licenses, 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
         | 
        
                     ラベルのリスト。デフォルトは  
 
タイプ  
ルール: ルール(通常は  
この引数は、  | 
      
          data
         | 
        
                     ラベルのリスト。デフォルトは  data に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。 | 
      
          resources
         | 
        
                     ラベルのリスト。デフォルトは  リソースは、ソースファイルまたは生成されたファイルです。 
リソースが指定されている場合、コンパイルによって生成された通常の   | 
      
          add_exports
         | 
        
                     文字列のリスト。デフォルトは  module または package へのアクセスを許可します。これは、javac と JVM の --add-exports= フラグに対応します。  | 
      
          add_opens
         | 
        
                     文字列のリスト。デフォルトは  module または package にリフレクションでアクセスできるようにします。これは、javac と JVM の --add-opens= フラグに対応します。  | 
      
          bootclasspath
         | 
        
                     ラベル。デフォルトは   | 
      
          classpath_resources
         | 
        
                     ラベルのリスト。デフォルトは  
java ツリーのルートに配置する必要があるリソースのリスト。この属性の唯一の目的は、リソースがクラスパスで   | 
      
          create_executable
         | 
        
                     ブール値。デフォルトは  java_single_jar を使用してください。 | 
      
          deploy_env
         | 
        
                     ラベルのリスト。デフォルトは  java_binary ターゲットのリスト。別の java_binary によって読み込まれるプラグインをビルドするときに、この属性を設定します。この属性を設定すると、このバイナリと deploy_env で指定されたターゲットの間で共有される、このバイナリのランタイム クラスパス(およびデプロイ jar)からすべての依存関係が除外されます。 | 
      
          deploy_manifest_lines
         | 
        
                     文字列のリスト。デフォルトは  *_deploy.jar ターゲット用に生成された META-INF/manifest.mf ファイルに追加する行のリスト。この属性の内容は、「変数の作成」の置換の対象にはなりません。 | 
      
          javacopts
         | 
        
                     文字列のリスト。デフォルトは  これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。  | 
      
          jvm_flags
         | 
        
                     文字列のリスト。デフォルトは  Java バイナリのラッパー スクリプトには、CLASSPATH 定義(すべての依存 jar を見つけるため)が含まれており、適切な Java インタープリタを呼び出します。ラッパー スクリプトによって生成されたコマンドラインには、メインクラスの名前の後に  この属性は   | 
      
          launcher
         | 
        
                     ラベル。デフォルトは  bin/java プログラムの代わりに、Java プログラムの実行に使用するバイナリを指定します。ターゲットは cc_binary である必要があります。
Java Invocation API を実装する cc_binary は、この属性の値として指定できます。デフォルトでは、Bazel は通常の JDK ランチャー(bin/java または java.exe)を使用します。 関連する  ネイティブ(C++、SWIG、JNI)の依存関係は、JDK ランチャーを使用しているか、別のランチャーを使用しているかによって、ビルド方法が異なります。 
 デフォルトの JDK ランチャー以外のランチャーを使用すると、  | 
      
          main_class
         | 
        
                     文字列。デフォルトは  main() メソッドを含むクラスの名前。ルールでこのオプションを使用する場合、srcs=[...] リストは必要ありません。この属性を使用すると、1 つ以上の main() メソッドをすでに含む Java ライブラリから実行可能ファイルを作成できます。
この属性の値は、ソースファイルではなくクラス名です。クラスは実行時に使用可能である必要があります。このルール(  | 
      
          neverlink
         | 
        
                     ブール値。デフォルトは   | 
      
          plugins
         | 
        
                     ラベルのリスト。デフォルトは  java_plugin は、このルールがビルドされるたびに実行されます。ライブラリは、exported_plugins を使用する依存関係からプラグインを継承することもできます。プラグインによって生成されたリソースは、このルールの結果の jar に含まれます。 | 
      
          resource_strip_prefix
         | 
        
                     文字列。デフォルトは  
指定すると、このパス接頭辞は   | 
      
          runtime_deps
         | 
        
                     ラベルのリスト。デフォルトは  deps と同様に、これらはランタイム クラスパスに表示されますが、コンパイル時クラスパスには表示されません。ランタイムでのみ必要な依存関係は、ここにリストする必要があります。依存関係分析ツールは、runtime_deps と deps の両方に現れるターゲットを無視する必要があります。 | 
      
          stamp
         | 
        
                     整数。デフォルトは  
 依存関係が変更されない限り、スタンプ付きバイナリは再構築されません。  | 
      
          use_launcher
         | 
        
                     ブール値。デフォルトは  この属性が false に設定されている場合、このターゲットでは launcher 属性と関連する   | 
      
          use_testrunner
         | 
        
                     ブール値。デフォルトは  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, distribs, exec_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, 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
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          data
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          add_exports
         | 
        
                     文字列のリスト。デフォルトは  module または package へのアクセスを許可します。これは、javac と JVM の --add-exports= フラグに対応します。  | 
      
          add_opens
         | 
        
                     文字列のリスト。デフォルトは  module または package にリフレクションでアクセスできるようにします。これは、javac と JVM の --add-opens= フラグに対応します。  | 
      
          constraints
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          exports
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          jars
         | 
        
                     ラベルのリスト。必須 このターゲットに依存する Java ターゲットに提供される JAR ファイルのリスト。 | 
      
          neverlink
         | 
        
                     ブール値。デフォルトは  tools.jar などがあります。 | 
      
          proguard_specs
         | 
        
                     ラベルのリスト。デフォルトは  android_binary ターゲットに追加されます。ここに含めるファイルには、べき等ルール(-dontnote、-dontwarn、assumenosideeffects、-keep で始まるルール)のみを含める必要があります。他のオプションは、android_binary の proguard_specs にのみ表示できます。これにより、トートロジーでないマージが保証されます。 | 
      
          runtime_deps
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          srcjar
         | 
        
                     ラベル。デフォルトは   | 
      
java_library
ルールソースを表示java_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, 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 に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。
   
  一方、  | 
      
          srcs
         | 
        
                     ラベルのリスト。デフォルトは  
 
タイプ  
ルール: ルール(通常は  
 上記のファイル形式のファイルが 1 つ以上存在する場合、他のファイルはすべて無視されます。それ以外の場合は、エラーが発生します。 
  | 
      
          data
         | 
        
                     ラベルのリスト。デフォルトは  data に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。
    | 
      
          resources
         | 
        
                     ラベルのリスト。デフォルトは  リソースは、ソースファイルまたは生成されたファイルです。 
リソースが指定されている場合、コンパイルによって生成された通常の   | 
      
          add_exports
         | 
        
                     文字列のリスト。デフォルトは  module または package へのアクセスを許可します。これは、javac と JVM の --add-exports= フラグに対応します。  | 
      
          add_opens
         | 
        
                     文字列のリスト。デフォルトは  module または package にリフレクションでアクセスできるようにします。これは、javac と JVM の --add-opens= フラグに対応します。  | 
      
          bootclasspath
         | 
        
                     ラベル。デフォルトは   | 
      
          exported_plugins
         | 
        
                     ラベルのリスト。デフォルトは  java_plugin のリスト(アノテーション プロセッサなど)。
  指定された   | 
      
          exports
         | 
        
                     ラベルのリスト。デフォルトは  
  ここにルールをリストすると、親がこれらのルールに明示的に依存しているかのように、親ルールでこれらのルールを使用できるようになります。これは、通常の(エクスポートされていない) 
  概要: X というルールは、 
  A が B に依存し、B が C に依存しているとします。この場合、C は A の推移的依存関係であるため、C のソースを変更して A を再ビルドすると、すべてが正しく再ビルドされます。ただし、A は C のクラスを使用できません。これを許可するには、A が  エクスポートされたライブラリの終了は、すべての直接の親ルールで使用できます。少し異なる例を考えてみましょう。A は B に依存し、B は C と D に依存し、C をエクスポートしますが、D はエクスポートしません。これで、A は C にアクセスできますが、D にはアクセスできません。ここで、C と D がそれぞれ C' と D' というライブラリをエクスポートした場合、A は C' にはアクセスできますが、D' にはアクセスできません。 
  重要: エクスポートされたルールは通常の依存関係ではありません。前の例に沿って説明すると、B が C をエクスポートし、C も使用したい場合は、独自の   | 
      
          javabuilder_jvm_flags
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          javacopts
         | 
        
                     文字列のリスト。デフォルトは  これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。  | 
      
          neverlink
         | 
        
                     ブール値。デフォルトは  tools.jar などがあります。
   ランタイム ライブラリがコンパイル ライブラリと異なる場合、JLS がコンパイラによるインライン化を禁止している箇所でのみ異なることを確認する必要があります(これは JLS の将来のすべてのバージョンで保持される必要があります)。  | 
      
          plugins
         | 
        
                     ラベルのリスト。デフォルトは  java_plugin は、このルールがビルドされるたびに実行されます。ライブラリは、exported_plugins を使用する依存関係からプラグインを継承することもできます。プラグインによって生成されたリソースは、このルールの結果の jar に含まれます。 | 
      
          proguard_specs
         | 
        
                     ラベルのリスト。デフォルトは  android_binary ターゲットに追加されます。ここに含めるファイルには、べき等ルール(-dontnote、-dontwarn、assumenosideeffects、-keep で始まるルール)のみを含める必要があります。他のオプションは、android_binary の proguard_specs にのみ表示できます。これにより、トートロジーでないマージが保証されます。 | 
      
          resource_strip_prefix
         | 
        
                     文字列。デフォルトは  
指定すると、このパス接頭辞は   | 
      
          runtime_deps
         | 
        
                     ラベルのリスト。デフォルトは  deps と同様に、これらはランタイム クラスパスに表示されますが、コンパイル時クラスパスには表示されません。ランタイムでのみ必要な依存関係は、ここにリストする必要があります。依存関係分析ツールは、runtime_deps と deps の両方に現れるターゲットを無視する必要があります。 | 
      
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, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, neverlink, 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
         | 
        
                     ラベルのリスト。デフォルトは  
 
タイプ  
ルール: ルール(通常は  
この引数は、  | 
      
          data
         | 
        
                     ラベルのリスト。デフォルトは  data に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。 | 
      
          resources
         | 
        
                     ラベルのリスト。デフォルトは  リソースは、ソースファイルまたは生成されたファイルです。 
リソースが指定されている場合、コンパイルによって生成された通常の   | 
      
          add_exports
         | 
        
                     文字列のリスト。デフォルトは  module または package へのアクセスを許可します。これは、javac と JVM の --add-exports= フラグに対応します。  | 
      
          add_opens
         | 
        
                     文字列のリスト。デフォルトは  module または package にリフレクションでアクセスできるようにします。これは、javac と JVM の --add-opens= フラグに対応します。  | 
      
          bootclasspath
         | 
        
                     ラベル。デフォルトは   | 
      
          classpath_resources
         | 
        
                     ラベルのリスト。デフォルトは  
java ツリーのルートに配置する必要があるリソースのリスト。この属性の唯一の目的は、リソースがクラスパスで   | 
      
          create_executable
         | 
        
                     ブール値。デフォルトは  java_single_jar を使用してください。 | 
      
          deploy_manifest_lines
         | 
        
                     文字列のリスト。デフォルトは  *_deploy.jar ターゲット用に生成された META-INF/manifest.mf ファイルに追加する行のリスト。この属性の内容は、「変数の作成」の置換の対象にはなりません。 | 
      
          javacopts
         | 
        
                     文字列のリスト。デフォルトは  これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。  | 
      
          jvm_flags
         | 
        
                     文字列のリスト。デフォルトは  Java バイナリのラッパー スクリプトには、CLASSPATH 定義(すべての依存 jar を見つけるため)が含まれており、適切な Java インタープリタを呼び出します。ラッパー スクリプトによって生成されたコマンドラインには、メインクラスの名前の後に  この属性は   | 
      
          launcher
         | 
        
                     ラベル。デフォルトは  bin/java プログラムの代わりに、Java プログラムの実行に使用するバイナリを指定します。ターゲットは cc_binary である必要があります。
Java Invocation API を実装する cc_binary は、この属性の値として指定できます。デフォルトでは、Bazel は通常の JDK ランチャー(bin/java または java.exe)を使用します。 関連する  ネイティブ(C++、SWIG、JNI)の依存関係は、JDK ランチャーを使用しているか、別のランチャーを使用しているかによって、ビルド方法が異なります。 
 デフォルトの JDK ランチャー以外のランチャーを使用すると、  | 
      
          main_class
         | 
        
                     文字列。デフォルトは  main() メソッドを含むクラスの名前。ルールでこのオプションを使用する場合、srcs=[...] リストは必要ありません。この属性を使用すると、1 つ以上の main() メソッドをすでに含む Java ライブラリから実行可能ファイルを作成できます。
この属性の値は、ソースファイルではなくクラス名です。クラスは実行時に使用可能である必要があります。このルール(  | 
      
          neverlink
         | 
        
                     ブール値。デフォルトは   | 
      
          plugins
         | 
        
                     ラベルのリスト。デフォルトは  java_plugin は、このルールがビルドされるたびに実行されます。ライブラリは、exported_plugins を使用する依存関係からプラグインを継承することもできます。プラグインによって生成されたリソースは、このルールの結果の jar に含まれます。 | 
      
          resource_strip_prefix
         | 
        
                     文字列。デフォルトは  
指定すると、このパス接頭辞は   | 
      
          runtime_deps
         | 
        
                     ラベルのリスト。デフォルトは  deps と同様に、これらはランタイム クラスパスに表示されますが、コンパイル時クラスパスには表示されません。ランタイムでのみ必要な依存関係は、ここにリストする必要があります。依存関係分析ツールは、runtime_deps と deps の両方に現れるターゲットを無視する必要があります。 | 
      
          stamp
         | 
        
                     整数。デフォルトは  
 依存関係が変更されない限り、スタンプ付きバイナリは再構築されません。  | 
      
          test_class
         | 
        
                     文字列。デフォルトは  
  デフォルトでは、この引数が定義されていない場合、レガシー モードが使用され、代わりにテスト引数が使用されます。 
  この属性は、このテストで実行される Java クラスの名前を指定します。この設定が必要になることはほとんどありません。この引数を省略すると、ターゲットの  
  JUnit3 の場合、テストクラスは  
  この属性を使用すると、複数の   | 
      
          use_launcher
         | 
        
                     ブール値。デフォルトは  この属性が false に設定されている場合、このターゲットでは launcher 属性と関連する   | 
      
          use_testrunner
         | 
        
                     ブール値。デフォルトは  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, exec_compatible_with, exec_properties, features, javacopts, output_licenses, 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
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          output_licenses
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          packages
         | 
        
                     ラベルのリスト。デフォルトは  package_group のセット。 | 
      
          system
         | 
        
                     ラベル。デフォルトは   | 
      
java_plugin
ルールソースを表示java_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, 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 に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。
   
  一方、  | 
      
          srcs
         | 
        
                     ラベルのリスト。デフォルトは  
 
タイプ  
ルール: ルール(通常は  
 上記のファイル形式のファイルが 1 つ以上存在する場合、他のファイルはすべて無視されます。それ以外の場合は、エラーが発生します。 
  | 
      
          data
         | 
        
                     ラベルのリスト。デフォルトは  data に関する一般的なコメントについては、ほとんどのビルドルールで定義される一般的な属性をご覧ください。
    | 
      
          resources
         | 
        
                     ラベルのリスト。デフォルトは  リソースは、ソースファイルまたは生成されたファイルです。 
リソースが指定されている場合、コンパイルによって生成された通常の   | 
      
          add_exports
         | 
        
                     文字列のリスト。デフォルトは  module または package へのアクセスを許可します。これは、javac と JVM の --add-exports= フラグに対応します。  | 
      
          add_opens
         | 
        
                     文字列のリスト。デフォルトは  module または package にリフレクションでアクセスできるようにします。これは、javac と JVM の --add-opens= フラグに対応します。  | 
      
          bootclasspath
         | 
        
                     ラベル。デフォルトは   | 
      
          generates_api
         | 
        
                     ブール値。デフォルトは  ルールが API 生成アノテーション プロセッサを使用する場合、そのルールに依存する他のルールは、生成ルールの後にコンパイル アクションがスケジュールされている場合にのみ、生成されたコードを参照できます。この属性は、--java_header_compilation が有効になっている場合に、スケジューリング制約を導入するように Bazel に指示します。 警告: この属性はビルドのパフォーマンスに影響します。必要な場合にのみ使用してください。  | 
      
          javabuilder_jvm_flags
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          javacopts
         | 
        
                     文字列のリスト。デフォルトは  これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。  | 
      
          neverlink
         | 
        
                     ブール値。デフォルトは  tools.jar などがあります。
   ランタイム ライブラリがコンパイル ライブラリと異なる場合、JLS がコンパイラによるインライン化を禁止している箇所でのみ異なることを確認する必要があります(これは JLS の将来のすべてのバージョンで保持される必要があります)。  | 
      
          output_licenses
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          plugins
         | 
        
                     ラベルのリスト。デフォルトは  java_plugin は、このルールがビルドされるたびに実行されます。ライブラリは、exported_plugins を使用する依存関係からプラグインを継承することもできます。プラグインによって生成されたリソースは、このルールの結果の jar に含まれます。 | 
      
          processor_class
         | 
        
                     文字列。デフォルトは   | 
      
          proguard_specs
         | 
        
                     ラベルのリスト。デフォルトは  android_binary ターゲットに追加されます。ここに含めるファイルには、べき等ルール(-dontnote、-dontwarn、assumenosideeffects、-keep で始まるルール)のみを含める必要があります。他のオプションは、android_binary の proguard_specs にのみ表示できます。これにより、トートロジーでないマージが保証されます。 | 
      
          resource_strip_prefix
         | 
        
                     文字列。デフォルトは  
指定すると、このパス接頭辞は   | 
      
java_runtime
ルールソースを表示java_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, exec_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, 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
         | 
        
                     ラベル。デフォルトは  java_runtime のデフォルトの CDS アーカイブ。java_binary ターゲットで hermetic が有効になっている場合、java_runtime デフォルト CDS は hermetic デプロイ JAR にパッケージ化されます。 | 
      
          hermetic_srcs
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          hermetic_static_libs
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          java
         | 
        
                     ラベル。デフォルトは   | 
      
          java_home
         | 
        
                     文字列。デフォルトは  srcs 属性と java 属性は空にする必要があります。 | 
      
          lib_ct_sym
         | 
        
                     ラベル。デフォルトは  --release でのコンパイルに必要な lib/ct.sym ファイル。指定されておらず、srcs にパスが /lib/ct.sym で終わるファイルが 1 つだけある場合、そのファイルが使用されます。 | 
      
          lib_modules
         | 
        
                     ラベル。デフォルトは   | 
      
          output_licenses
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          version
         | 
        
                     整数。デフォルトは  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_javacopts, compatible_with, deprecation, deps_checker, distribs, exec_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, 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_opts
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          android_lint_package_configuration
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          android_lint_runner
         | 
        
                     ラベル。デフォルトは   | 
      
          bootclasspath
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          compatible_javacopts
         | 
        
                     null。デフォルトは   | 
      
          deps_checker
         | 
        
                     ラベル。デフォルトは   | 
      
          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
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          misc
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          oneversion
         | 
        
                     ラベル。デフォルトは   | 
      
          oneversion_allowlist
         | 
        
                     ラベル。デフォルトは   | 
      
          oneversion_allowlist_for_tests
         | 
        
                     ラベル。デフォルトは   | 
      
          oneversion_whitelist
         | 
        
                     ラベル。デフォルトは   | 
      
          package_configuration
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          proguard_allowlister
         | 
        
                     ラベル。デフォルトは   | 
      
          reduced_classpath_incompatible_processors
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          singlejar
         | 
        
                     ラベル。デフォルトは   | 
      
          source_version
         | 
        
                     文字列。デフォルトは   | 
      
          target_version
         | 
        
                     文字列。デフォルトは   | 
      
          timezone_data
         | 
        
                     ラベル。デフォルトは   | 
      
          tools
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          turbine_data
         | 
        
                     ラベルのリスト。デフォルトは   | 
      
          turbine_jvm_opts
         | 
        
                     文字列のリスト。デフォルトは   | 
      
          xlint
         | 
        
                     文字列のリスト。デフォルトは   |