Regeln
- java_binary
- java_import
- java_library
- java_lite_proto_library
- java_proto_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_toolchain
java_binary
Regelquelle ansehenjava_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)
Erstellt ein Java-Archiv („JAR-Datei“) sowie ein Wrapper-Shell-Script mit dem gleichen Namen wie die Regel.
Das Wrapper-Shell-Skript verwendet einen Klassenpfad, der unter anderem eine JAR-Datei für jede Bibliothek enthält, von der die Binärdatei abhängt. Beim Ausführen des Wrapper-Shell-Skripts hat jede nicht leere JAVABIN
-Umgebungsvariable Vorrang vor der Version, die über das Flag --java_runtime_version
von Looker angegeben wurde.
Das Wrapper-Skript akzeptiert mehrere eindeutige Flags. Unter //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
finden Sie eine Liste der konfigurierbaren Flags und Umgebungsvariablen, die vom Wrapper akzeptiert werden.
Implizite Ausgabeziele
name.jar
: Ein Java-Archiv, das die Klassendateien und andere Ressourcen enthält, die den direkten Abhängigkeiten der Binärdatei entsprechen.name-src.jar
: Ein Archiv mit den Quellen („Quell-JAR-Datei“).name_deploy.jar
: Ein Java-Archiv, das für die Bereitstellung geeignet ist (nur erstellt, wenn dies explizit angefordert wird).Wenn Sie das
<name>_deploy.jar
-Ziel für Ihre Regel erstellen, wird eine eigenständige JAR-Datei mit einem Manifest erstellt, das die Ausführung mit dem Befehljava -jar
oder der Option--singlejar
des Wrapper-Skripts ermöglicht. Das Wrapper-Skript wird gegenüberjava -jar
bevorzugt, da es auch die JVM-Flags und die Optionen zum Laden nativer Bibliotheken übergibt.Die Bereitstellungs-JAR-Datei enthält alle Klassen, die von einem Classloader gefunden werden würden, der den Klassenpfad im Wrapper-Skript des Binärprogramms von Anfang bis Ende durchsucht hat. Außerdem enthält es die nativen Bibliotheken, die für Abhängigkeiten erforderlich sind. Diese werden zur Laufzeit automatisch in die JVM geladen.
Wenn Ihr Ziel ein Launcher-Attribut angibt, ist die _deploy.jar-Datei keine normale JAR-Datei, sondern eine native Binärdatei. Dieser enthält den Launcher sowie alle nativen (C++) Abhängigkeiten Ihrer Regel, die alle in einer statischen Binärdatei verknüpft sind. Die Byte der eigentlichen JAR-Datei werden an diese native Binärdatei angehängt, wodurch ein einzelnes Binär-Blob erstellt wird, das sowohl die ausführbare Datei als auch den Java-Code enthält. Sie können die resultierende JAR-Datei wie jede native Binärdatei ausführen.
name_deploy-src.jar
: Ein Archiv mit den Quellen, die bei der vorübergehenden Schließung des Ziels erfasst wurden. Diese stimmen mit den Klassen indeploy.jar
überein, es sei denn, JAR-Dateien haben keine übereinstimmende Quell-JAR-Datei.
Ein deps
-Attribut ist in einer java_binary
-Regel ohne srcs
nicht zulässig. Eine solche Regel erfordert eine main_class
von runtime_deps
.
Das folgende Code-Snippet veranschaulicht einen häufigen Fehler:
java_binary( name = "DontDoThis", srcs = [ ..., "GeneratedJavaFile.java", # a generated .java file ], deps = [":generating_rule"], # rule that generates that file )
Gehen Sie stattdessen so vor:
java_binary( name = "DoThisInstead", srcs = [ ..., ":generating_rule", ], )
Argumente
Attribute | |
---|---|
name |
Name: erforderlich Ein eindeutiger Name für dieses Ziel. Es empfiehlt sich, den Namen der Quelldatei zu verwenden, die der Haupteinstiegspunkt der Anwendung ist (ohne die Erweiterung). Wenn Ihr Einstiegspunkt beispielsweise Main.java heißt, könnte Ihr Name Main sein.
|
deps
|
Liste mit Labels; Standardwert ist deps finden Sie unter Typische Attribute, die von den meisten Build-Regeln definiert werden.
|
srcs
|
Liste mit Labels; Standardwert ist
Quelldateien vom Typ
Quelldateien vom Typ
Regeln: Wenn durch die Regel (normalerweise
Dieses Argument ist fast immer erforderlich, außer wenn ein |
resources
|
Liste mit Labels; Standardwert ist
Wenn Ressourcen angegeben sind, werden sie in der JAR-Datei zusammen mit den üblichen Ressourcen können Quelldateien oder generierte Dateien sein. |
classpath_resources
|
Liste mit Labels; Standardwert ist
Eine Liste der Ressourcen, die sich auf der Stammebene des Java-Baums befinden müssen. Der einzige Zweck dieses Attributs besteht darin, Bibliotheken von Drittanbietern zu unterstützen, deren Ressourcen genau wie |
create_executable
|
Boolesch; nicht konfigurierbar; Standardwert ist java_single_jar .
|
deploy_env
|
Liste mit Labels; Standardwert ist java_binary -Ziele, die die Bereitstellungsumgebung für dieses Binärprogramm darstellen.
Lege dieses Attribut fest, wenn du ein Plug-in erstellst, das von einem anderen java_binary geladen wird.Wenn dieses Attribut festgelegt wird, werden alle Abhängigkeiten aus dem Laufzeitklassenpfad (und der Bereitstellungs-JAR-Datei) dieser Binärdatei ausgeschlossen, die von dieser Binärdatei und den in deploy_env angegebenen Zielen gemeinsam genutzt werden.
|
deploy_manifest_lines
|
Liste mit Strings; Standardwert ist META-INF/manifest.mf hinzugefügt werden sollen, die für das Ziel *_deploy.jar generiert wurde. Der Inhalt dieses Attributs unterliegt nicht der Ersetzung „Variable machen“.
|
javacopts
|
Liste mit Strings; Standardwert ist Diese Compiler-Optionen werden nach den globalen Compiler-Optionen an javac übergeben. |
jvm_flags
|
Liste mit Strings; Standardwert ist Das Wrapper-Skript für eine Java-Binärdatei enthält eine CLASSPATH-Definition (um alle abhängigen JAR-Dateien zu finden) und ruft den richtigen Java-Interpreter auf.
Die vom Wrapper-Skript generierte Befehlszeile enthält den Namen der Hauptklasse gefolgt von einem Beachten Sie, dass dieses Attribut keine Auswirkungen auf |
launcher
|
Label; Standardwert ist bin/java -Programms, das im JDK enthalten ist, verwendet wird.
Das Ziel muss ein cc_binary sein. Jeder cc_binary , der die
Java Invocation API implementiert, kann als Wert für dieses Attribut angegeben werden.
Standardmäßig verwendet Looker den normalen JDK-Launcher (bin/java oder java.exe). Das zugehörige Qwiklabs-Flag Ihre nativen Abhängigkeiten (C++, SWIG, JNI) werden abhängig davon, ob Sie den JDK-Launcher oder einen anderen Launcher verwenden, unterschiedlich aufgebaut:
Wenn Sie einen anderen Launcher als den JDK-Standard-Launcher verwenden, ändert sich das Format der |
main_class
|
String; der Standardwert ist main() , die als Einstiegspunkt verwendet werden soll.
Wenn eine Regel diese Option verwendet, ist keine srcs=[...] -Liste erforderlich.
Daher kann mit diesem Attribut eine ausführbare Datei aus einer Java-Bibliothek erstellt werden, die bereits eine oder mehrere main() -Methoden enthält.
Der Wert dieses Attributs ist ein Klassenname, keine Quelldatei. Die Klasse muss zur Laufzeit verfügbar sein: Sie kann durch diese Regel (aus |
plugins
|
Liste mit Labels; Standardwert ist java_plugin wird bei jeder Erstellung dieser Regel ausgeführt. Eine Bibliothek kann auch Plug-ins von Abhängigkeiten übernehmen, die exported_plugins verwenden. Vom Plug-in generierte Ressourcen werden in die resultierende JAR-Datei dieser Regel aufgenommen.
|
resource_jars
|
Liste mit Labels; Standardwert ist |
resource_strip_prefix
|
String; der Standardwert ist
Wenn dieses Pfadpräfix angegeben wird, wird es aus jeder Datei im Attribut |
runtime_deps
|
Liste mit Labels; Standardwert ist deps werden auch diese im Laufzeitklassenpfad angezeigt, jedoch im Gegensatz zu ihnen nicht im Klassenpfad der Kompilierungszeit. Hier sollten Abhängigkeiten aufgeführt sein, die nur zur Laufzeit benötigt werden. Tools zur Abhängigkeitsanalyse sollten Ziele ignorieren, die sowohl in runtime_deps als auch in deps enthalten sind.
|
stamp
|
Ganzzahl; der Standardwert ist
Gestempelte Binärprogramme werden nicht neu erstellt, es sei denn, ihre Abhängigkeiten ändern sich. |
use_launcher
|
Boolescher Wert; Standardwert ist Ist dieses Attribut auf „false“ gesetzt, werden das Attribut Launcher und das zugehörige Flag |
use_testrunner
|
Boolescher Wert; Standardwert ist com.google.testing.junit.runner.BazelTestRunner ) als Haupteinstiegspunkt für ein Java-Programm und geben Sie die Testklasse als Wert des Systemattributs bazel.test_suite an den Test-Runner an.
Damit können Sie das Standardverhalten überschreiben: Die Verwendung des Test-Runners für java_test -Regeln und nicht für java_binary -Regeln. Es ist unwahrscheinlich, dass Sie dies tun werden. Eine Verwendung ist für AllTest -Regeln, die von einer anderen Regel aufgerufen werden (z. B. um eine Datenbank vor dem Ausführen der Tests einzurichten). Die AllTest -Regel muss als java_binary deklariert werden, sollte aber trotzdem den Test-Runner als Haupteinstiegspunkt verwenden.
Der Name einer Test-Runner-Klasse kann mit dem Attribut main_class überschrieben werden.
|
java_import
Regelquelle ansehenjava_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)
Diese Regel ermöglicht die Verwendung vorkompilierter .jar
-Dateien als Bibliotheken für java_library
- und java_binary
-Regeln.
Beispiele
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",
],
)
Argumente
Attribute | |
---|---|
name |
Name: erforderlich Ein eindeutiger Name für dieses Ziel. |
deps
|
Liste mit Labels; Standardwert ist |
data
|
Liste mit Labels; Standardwert ist |
add_exports
|
Liste mit Strings; Standardwert ist module oder package zuzugreifen.
Dies entspricht den javac- und JVM --add-exports=-Flags. |
add_opens
|
Liste mit Strings; Standardwert ist module oder package zuzugreifen.
Dies entspricht den javac- und JVM-Flags --add-opens=. |
constraints
|
Liste mit Strings; Standardwert ist |
exports
|
Liste mit Labels; Standardwert ist |
jars
|
Liste der Labels; erforderlich Die Liste der JAR-Dateien, die für Java-Ziele bereitgestellt werden, die von diesem Ziel abhängen. |
neverlink
|
Boolescher Wert; Standardwert ist tools.jar für alles, was auf einem Standard-JDK ausgeführt wird.
|
proguard_specs
|
Liste mit Labels; Standardwert ist android_binary -Ziel hinzugefügt.
Die hier enthaltenen Dateien dürfen nur idempotente Regeln enthalten, nämlich "-dontnote", "-dontwarn", "assumenosideeffects" und Regeln, die mit "-keep" beginnen. Andere Optionen können nur in den proguard_specs von android_binary angezeigt werden, um eine nicht tautologische Zusammenführung zu ermöglichen.
|
runtime_deps
|
Liste mit Labels; Standardwert ist |
srcjar
|
Label; Standardwert ist |
java_library
Regelquelle ansehenjava_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)
Mit dieser Regel werden Quellen in einer .jar
-Datei kompiliert und verknüpft.
Implizite Ausgaben
libname.jar
: Ein Java-Archiv, das die Klassendateien enthält.libname-src.jar
: Ein Archiv mit den Quellen („Quell-JAR-Datei“).
Argumente
Attribute | |
---|---|
name |
Name: erforderlich Ein eindeutiger Name für dieses Ziel. |
deps
|
Liste mit Labels; Standardwert ist deps finden Sie unter Typische Attribute, die von den meisten Build-Regeln definiert werden.
Die JAR-Dateien, die von den in
Im Gegensatz dazu sind Ziele im Attribut |
srcs
|
Liste mit Labels; Standardwert ist
Quelldateien vom Typ
Quelldateien vom Typ
Regeln: Wenn durch die Regel (normalerweise
Quelldateien vom Typ Alle anderen Dateien werden ignoriert, solange mindestens eine Datei des oben beschriebenen Dateityps vorhanden ist. Andernfalls wird ein Fehler ausgegeben.
Dieses Argument ist fast immer erforderlich, es sei denn, Sie geben das Argument |
data
|
Liste mit Labels; Standardwert ist data finden Sie unter Typische Attribute, die von den meisten Build-Regeln definiert werden.
Beim Erstellen einer |
resources
|
Liste mit Labels; Standardwert ist Ressourcen können Quelldateien oder generierte Dateien sein.
Wenn Ressourcen angegeben sind, werden sie in der JAR-Datei zusammen mit den üblichen |
add_exports
|
Liste mit Strings; Standardwert ist module oder package zuzugreifen.
Dies entspricht den javac- und JVM --add-exports=-Flags. |
add_opens
|
Liste mit Strings; Standardwert ist module oder package zuzugreifen.
Dies entspricht den javac- und JVM-Flags --add-opens=. |
bootclasspath
|
Label; Standardwert ist |
exported_plugins
|
Liste mit Labels; Standardwert ist java_plugin s (z.B. Annotationsprozessoren), die in Bibliotheken exportiert werden sollen, die direkt von dieser Bibliothek abhängen.
Die angegebene Liste von |
exports
|
Liste mit Labels; Standardwert ist
Wenn Sie Regeln hier auflisten, sind sie für übergeordnete Regeln verfügbar, als ob sie explizit von diesen Regeln abhängig wären. Dies gilt nicht für reguläre (nicht exportierte)
Zusammenfassung: Eine Regel X kann auf den Code in Y zugreifen, wenn ein Abhängigkeitspfad zwischen ihnen besteht, der mit einer
Es wird angenommen, dass A von B und B von C abhängt. In diesem Fall ist C eine transitive Abhängigkeit von A. Wenn Sie also die Quellen von C ändern und A neu erstellen, wird alles korrekt neu erstellt. A kann jedoch keine Klassen in C verwenden. Dazu muss entweder A entweder C in seiner Das Schließen exportierter Bibliotheken ist für alle direkt übergeordneten Regeln möglich. Nehmen wir ein etwas anderes Beispiel: A hängt von B ab, B hängt von C und D ab und exportiert auch C, aber nicht D. Jetzt hat A Zugriff auf C, aber nicht auf D. Wenn C und D nun einige Bibliotheken (C' und D') exportiert haben, könnte A nur auf C', aber nicht auf D' zugreifen.
Wichtig: Eine exportierte Regel ist keine reguläre Abhängigkeit. Wenn B in Bezug auf das vorherige Beispiel C exportiert und auch C verwenden möchte, muss es auch in einer eigenen |
javabuilder_jvm_flags
|
Liste mit Strings; Standardwert ist |
javacopts
|
Liste mit Strings; Standardwert ist Diese Compiler-Optionen werden nach den globalen Compiler-Optionen an javac übergeben. |
neverlink
|
Boolescher Wert; Standardwert ist tools.jar für alle Anwendungen, die auf einem Standard-JDK ausgeführt werden.
Beachten Sie, dass Wenn sich die Laufzeitbibliothek von der Kompilierungsbibliothek unterscheidet, müssen Sie dafür sorgen, dass sie sich nur an Stellen unterscheidet, an denen die JLS es nicht erlaubt, Compiler inline zuzulassen (und das für alle zukünftigen JLS-Versionen gelten muss). |
plugins
|
Liste mit Labels; Standardwert ist java_plugin wird bei jeder Erstellung dieser Regel ausgeführt. Eine Bibliothek kann auch Plug-ins von Abhängigkeiten übernehmen, die exported_plugins verwenden. Vom Plug-in generierte Ressourcen werden in die resultierende JAR-Datei dieser Regel aufgenommen.
|
proguard_specs
|
Liste mit Labels; Standardwert ist android_binary -Ziel hinzugefügt.
Die hier enthaltenen Dateien dürfen nur idempotente Regeln enthalten, nämlich "-dontnote", "-dontwarn", "assumenosideeffects" und Regeln, die mit "-keep" beginnen. Andere Optionen können nur in den proguard_specs von android_binary angezeigt werden, um eine nicht tautologische Zusammenführung zu ermöglichen.
|
resource_strip_prefix
|
String; der Standardwert ist
Wenn angegeben, wird dieses Pfadpräfix aus jeder Datei im Attribut |
runtime_deps
|
Liste mit Labels; Standardwert ist deps werden auch diese im Laufzeitklassenpfad angezeigt, jedoch im Gegensatz zu ihnen nicht im Klassenpfad der Kompilierungszeit. Hier sollten Abhängigkeiten aufgeführt sein, die nur zur Laufzeit benötigt werden. Tools zur Abhängigkeitsanalyse sollten Ziele ignorieren, die sowohl in runtime_deps als auch in deps enthalten sind.
|
java_lite_proto_library
Regelquelle ansehenjava_lite_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_lite_proto_library
generiert Java-Code aus .proto
-Dateien.
deps
muss auf proto_library
-Regeln verweisen.
Beispiel:
java_library(
name = "lib",
runtime_deps = [":foo"],
)
java_lite_proto_library(
name = "foo",
deps = [":bar"],
)
proto_library(
name = "bar",
)
Argumente
Attribute | |
---|---|
name |
Name: erforderlich Ein eindeutiger Name für dieses Ziel. |
deps
|
Liste mit Labels; Standardwert ist proto_library -Regeln, für die Java-Code generiert werden soll.
|
java_proto_library
Regelquelle ansehenjava_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_proto_library
generiert Java-Code aus .proto
-Dateien.
deps
muss auf proto_library
-Regeln verweisen.
Beispiel:
java_library(
name = "lib",
runtime_deps = [":foo_java_proto"],
)
java_proto_library(
name = "foo_java_proto",
deps = [":foo_proto"],
)
proto_library(
name = "foo_proto",
)
Argumente
Attribute | |
---|---|
name |
Name: erforderlich Ein eindeutiger Name für dieses Ziel. |
deps
|
Liste mit Labels; Standardwert ist proto_library -Regeln, für die Java-Code generiert werden soll.
|
java_test
Regelquelle ansehenjava_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)
Eine java_test()
-Regel kompiliert einen Java-Test. Ein Test ist ein binärer Wrapper um Ihren Testcode. Anstelle der zu kompilierenden Hauptklasse wird die Hauptmethode des Test-Runners aufgerufen.
Implizite Ausgabeziele
name.jar
: Ein Java-Archiv.name_deploy.jar
: Ein Java-Archiv, das sich für die Bereitstellung eignet. (Wird nur bei expliziter Anforderung erstellt.) Weitere Informationen finden Sie in der Beschreibung dername_deploy.jar
-Ausgabe von java_binary.
Weitere Informationen finden Sie im Abschnitt zu java_binary()
-Argumenten. Diese Regel unterstützt auch alle Attribute, die allen Testregeln gemeinsam sind (*_test).
Beispiele
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",
],
)
Argumente
Attribute | |
---|---|
name |
Name: erforderlich Ein eindeutiger Name für dieses Ziel. |
deps
|
Liste mit Labels; Standardwert ist deps finden Sie unter Typische Attribute, die von den meisten Build-Regeln definiert werden.
|
srcs
|
Liste mit Labels; Standardwert ist
Quelldateien vom Typ
Quelldateien vom Typ
Regeln: Wenn durch die Regel (normalerweise
Dieses Argument ist fast immer erforderlich, außer wenn ein |
data
|
Liste mit Labels; Standardwert ist data finden Sie unter Typische Attribute, die von den meisten Build-Regeln definiert werden.
|
resources
|
Liste mit Labels; Standardwert ist Ressourcen können Quelldateien oder generierte Dateien sein.
Wenn Ressourcen angegeben sind, werden sie in der JAR-Datei zusammen mit den üblichen |
add_exports
|
Liste mit Strings; Standardwert ist module oder package zuzugreifen.
Dies entspricht den javac- und JVM --add-exports=-Flags. |
add_opens
|
Liste mit Strings; Standardwert ist module oder package zuzugreifen.
Dies entspricht den javac- und JVM-Flags --add-opens=. |
bootclasspath
|
Label; Standardwert ist |
classpath_resources
|
Liste mit Labels; Standardwert ist
Eine Liste der Ressourcen, die sich auf der Stammebene des Java-Baums befinden müssen. Der einzige Zweck dieses Attributs besteht darin, Bibliotheken von Drittanbietern zu unterstützen, für die ihre Ressourcen genau wie |
create_executable
|
Boolescher Wert; Standardwert ist java_single_jar .
|
deploy_manifest_lines
|
Liste mit Strings; Standardwert ist META-INF/manifest.mf hinzugefügt werden sollen, die für das Ziel *_deploy.jar generiert wurde. Der Inhalt dieses Attributs unterliegt nicht der Ersetzung „Variable machen“.
|
javacopts
|
Liste mit Strings; Standardwert ist Diese Compiler-Optionen werden nach den globalen Compiler-Optionen an javac übergeben. |
jvm_flags
|
Liste mit Strings; Standardwert ist Das Wrapper-Skript für eine Java-Binärdatei enthält eine CLASSPATH-Definition (um alle abhängigen JAR-Dateien zu finden) und ruft den richtigen Java-Interpreter auf.
Die vom Wrapper-Skript generierte Befehlszeile enthält den Namen der Hauptklasse gefolgt von einem Beachten Sie, dass dieses Attribut keine Auswirkungen auf |
launcher
|
Label; Standardwert ist bin/java -Programms, das im JDK enthalten ist, verwendet wird.
Das Ziel muss ein cc_binary sein. Jeder cc_binary , der die
Java Invocation API implementiert, kann als Wert für dieses Attribut angegeben werden.
Standardmäßig verwendet Looker den normalen JDK-Launcher (bin/java oder java.exe). Das zugehörige Bali-Flag Ihre nativen Abhängigkeiten (C++, SWIG, JNI) sind abhängig davon, ob Sie den JDK-Launcher oder einen anderen Launcher verwenden:
Wenn Sie einen anderen Launcher als den JDK-Standard-Launcher verwenden, ändert sich das Format der |
main_class
|
String; der Standardwert ist main() , die als Einstiegspunkt verwendet werden soll.
Wenn eine Regel diese Option verwendet, ist keine srcs=[...] -Liste erforderlich.
So kann mit diesem Attribut eine ausführbare Datei aus einer Java-Bibliothek erstellt werden, die bereits eine oder mehrere main() -Methoden enthält.
Der Wert dieses Attributs ist ein Klassenname, keine Quelldatei. Die Klasse muss zur Laufzeit verfügbar sein: Sie kann durch diese Regel (aus |
neverlink
|
Boolescher Wert; Standardwert ist |
plugins
|
Liste mit Labels; Standardwert ist java_plugin wird bei jeder Erstellung dieser Regel ausgeführt. Eine Bibliothek kann auch Plug-ins von Abhängigkeiten übernehmen, die exported_plugins verwenden. Vom Plug-in generierte Ressourcen werden in die resultierende JAR-Datei dieser Regel aufgenommen.
|
resource_strip_prefix
|
String; der Standardwert ist
Wenn angegeben, wird dieses Pfadpräfix aus jeder Datei im Attribut |
runtime_deps
|
Liste mit Labels; Standardwert ist deps werden auch diese im Laufzeitklassenpfad angezeigt, jedoch im Gegensatz zu ihnen nicht im Klassenpfad der Kompilierungszeit. Hier sollten Abhängigkeiten aufgeführt sein, die nur zur Laufzeit benötigt werden. Tools zur Abhängigkeitsanalyse sollten Ziele ignorieren, die sowohl in runtime_deps als auch in deps enthalten sind.
|
stamp
|
Ganzzahl; der Standardwert ist
Gestempelte Binärprogramme werden nicht neu erstellt, es sei denn, ihre Abhängigkeiten ändern sich. |
test_class
|
String; der Standardwert ist
Wenn dieses Argument nicht definiert ist, werden standardmäßig der Legacy-Modus und stattdessen die Testargumente verwendet. Legen Sie das Flag
Dieses Attribut gibt den Namen einer Java-Klasse an, die von diesem Test ausgeführt werden soll. Es ist selten erforderlich, dies festzulegen. Wird dieses Argument weggelassen, wird es aus dem
Bei JUnit3 muss die Testklasse entweder eine abgeleitete Klasse von
Mit diesem Attribut können mehrere |
use_launcher
|
Boolescher Wert; Standardwert ist Ist das Attribut auf „false“ gesetzt, werden das Attribut Launcher und das zugehörige Flag |
use_testrunner
|
Boolescher Wert; Standardwert ist com.google.testing.junit.runner.BazelTestRunner ) als Haupteinstiegspunkt für ein Java-Programm und geben Sie die Testklasse als Wert des Systemattributs bazel.test_suite an den Test-Runner an.
Damit können Sie das Standardverhalten überschreiben: Die Verwendung des Test-Runners für java_test -Regeln und nicht für java_binary -Regeln. Es ist unwahrscheinlich, dass Sie
dies tun wollen. Eine Verwendung ist für AllTest -Regeln, die von einer anderen Regel aufgerufen werden (z. B. um eine Datenbank vor dem Ausführen der Tests einzurichten). Die AllTest -Regel muss als java_binary deklariert werden, sollte jedoch weiterhin den Test-Runner als Haupteinstiegspunkt verwenden.
Der Name einer Test-Runner-Klasse kann mit dem Attribut main_class überschrieben werden.
|
java_package_configuration
Regelquelle ansehenjava_package_configuration(name, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, javacopts, output_licenses, packages, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Konfiguration, die auf eine Gruppe von Paketen angewendet werden soll.
Konfigurationen können zu java_toolchain.javacopts
s hinzugefügt werden.
Beispiel:
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",
]
)
Argumente
Attribute | |
---|---|
name |
Name: erforderlich Ein eindeutiger Name für dieses Ziel. |
data
|
Liste mit Labels; Standardwert ist |
javacopts
|
Liste mit Strings; Standardwert ist |
output_licenses
|
Liste mit Strings; Standardwert ist |
packages
|
Liste mit Labels; Standardwert ist package_group s, auf die die Konfiguration angewendet werden soll.
|
java_plugin
Regelquelle ansehenjava_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
definiert Plug-ins für den Java-Compiler, der von außerhalb ausgeführt wird. Derzeit werden nur Annotationsprozessoren unterstützt. Eine java_library
- oder java_binary
-Regel kann Plug-ins ausführen, indem sie über das Attribut plugins
von ihnen abhängig ist. Ein java_library
kann Plug-ins mithilfe von exported_plugins
auch automatisch in direkt davon abhängige Bibliotheken exportieren.
Implizite Ausgabeziele
libname.jar
: Ein Java-Archiv.
Argumente sind mit java_library
bis auf das Hinzufügen des Arguments processor_class
identisch.
Argumente
Attribute | |
---|---|
name |
Name: erforderlich Ein eindeutiger Name für dieses Ziel. |
deps
|
Liste mit Labels; Standardwert ist deps finden Sie unter Typische Attribute, die von den meisten Build-Regeln definiert werden.
Die JAR-Dateien, die von den in
Im Gegensatz dazu sind Ziele im Attribut |
srcs
|
Liste mit Labels; Standardwert ist
Quelldateien vom Typ
Quelldateien vom Typ
Regeln: Wenn durch die Regel (normalerweise
Quelldateien vom Typ Alle anderen Dateien werden ignoriert, solange mindestens eine Datei des oben beschriebenen Dateityps vorhanden ist. Andernfalls wird ein Fehler ausgegeben.
Dieses Argument ist fast immer erforderlich, es sei denn, Sie geben das Argument |
data
|
Liste mit Labels; Standardwert ist data finden Sie unter Typische Attribute, die von den meisten Build-Regeln definiert werden.
Beim Erstellen einer |
resources
|
Liste mit Labels; Standardwert ist Ressourcen können Quelldateien oder generierte Dateien sein.
Wenn Ressourcen angegeben sind, werden sie in der JAR-Datei zusammen mit den üblichen |
add_exports
|
Liste mit Strings; Standardwert ist module oder package zuzugreifen.
Dies entspricht den javac- und JVM --add-exports=-Flags. |
add_opens
|
Liste mit Strings; Standardwert ist module oder package zuzugreifen.
Dies entspricht den javac- und JVM-Flags --add-opens=. |
bootclasspath
|
Label; Standardwert ist |
generates_api
|
Boolescher Wert; Standardwert ist Wenn eine Regel einen API-generierenden Annotationsprozessor verwendet, können andere davon abhängige Regeln nur dann auf den generierten Code verweisen, wenn ihre Kompilierungsaktionen nach der Generierungsregel geplant sind. Dieses Attribut weist Looker an, Planungseinschränkungen einzuführen, wenn „--java_header_compilation“ aktiviert ist. WARNUNG: Dieses Attribut wirkt sich auf die Build-Leistung aus. Verwenden Sie es nur, wenn es erforderlich ist. |
javabuilder_jvm_flags
|
Liste mit Strings; Standardwert ist |
javacopts
|
Liste mit Strings; Standardwert ist Diese Compiler-Optionen werden nach den globalen Compiler-Optionen an javac übergeben. |
neverlink
|
Boolescher Wert; Standardwert ist tools.jar für alle Anwendungen, die auf einem Standard-JDK ausgeführt werden.
Beachten Sie, dass Wenn sich die Laufzeitbibliothek von der Kompilierungsbibliothek unterscheidet, müssen Sie dafür sorgen, dass sie sich nur an Stellen unterscheidet, an denen die JLS es nicht erlaubt, Compiler inline zuzulassen (und das für alle zukünftigen JLS-Versionen gelten muss). |
output_licenses
|
Liste mit Strings; Standardwert ist |
plugins
|
Liste mit Labels; Standardwert ist java_plugin wird bei jeder Erstellung dieser Regel ausgeführt. Eine Bibliothek kann auch Plug-ins von Abhängigkeiten übernehmen, die exported_plugins verwenden. Vom Plug-in generierte Ressourcen werden in die resultierende JAR-Datei dieser Regel aufgenommen.
|
processor_class
|
String; der Standardwert ist |
proguard_specs
|
Liste mit Labels; Standardwert ist android_binary -Ziel hinzugefügt.
Die hier enthaltenen Dateien dürfen nur idempotente Regeln enthalten, nämlich "-dontnote", "-dontwarn", "assumenosideeffects" und Regeln, die mit "-keep" beginnen. Andere Optionen können nur in den proguard_specs von android_binary angezeigt werden, um eine nicht tautologische Zusammenführung zu ermöglichen.
|
resource_strip_prefix
|
String; der Standardwert ist
Wenn angegeben, wird dieses Pfadpräfix aus jeder Datei im Attribut |
java_runtime
Regelquelle ansehenjava_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)
Gibt die Konfiguration für eine Java-Laufzeit an.
Beispiel:
java_runtime(
name = "jdk-9-ea+153",
srcs = glob(["jdk9-ea+153/**"]),
java_home = "jdk9-ea+153",
)
Argumente
Attribute | |
---|---|
name |
Name: erforderlich Ein eindeutiger Name für dieses Ziel. |
srcs
|
Liste mit Labels; Standardwert ist |
default_cds
|
Label; Standardwert ist java_runtime . Wenn die Hermetik für ein java_binary -Ziel aktiviert ist und das Ziel durch Angabe des Attributs classlist kein eigenes CDS-Archiv bereitstellt, wird die java_runtime -Standard-CDS in der JAR-Datei für die hermetische Bereitstellung gepackt.
|
hermetic_srcs
|
Liste mit Labels; Standardwert ist |
hermetic_static_libs
|
Liste mit Labels; Standardwert ist |
java
|
Label; Standardwert ist |
java_home
|
String; der Standardwert ist srcs und java leer sein.
|
lib_ct_sym
|
Label; Standardwert ist --release erforderliche Datei lib/ct.sym. Wenn keine Angabe erfolgt und sich in srcs genau eine Datei befindet, deren Pfad mit /lib/ct.sym endet, wird diese Datei verwendet.
|
lib_modules
|
Label; Standardwert ist |
output_licenses
|
Liste mit Strings; Standardwert ist |
version
|
Ganzzahl; der Standardwert ist Runtime.version().feature() zurückgegebene Ganzzahl.
|
java_toolchain
Regelquelle ansehenjava_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_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)
Gibt die Konfiguration für den Java-Compiler an. Welche Toolchain verwendet werden soll, kann mit dem Argument "--java_warning" geändert werden. Normalerweise sollten Sie diese Art von Regeln nur schreiben, wenn Sie Ihren Java-Compiler optimieren möchten.
Beispiele
Ein einfaches Beispiel wäre:
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",
)
Argumente
Attribute | |
---|---|
name |
Name: erforderlich Ein eindeutiger Name für dieses Ziel. |
android_lint_data
|
Liste mit Labels; Standardwert ist |
android_lint_jvm_opts
|
Liste mit Strings; Standardwert ist |
android_lint_opts
|
Liste mit Strings; Standardwert ist |
android_lint_package_configuration
|
Liste mit Labels; Standardwert ist |
android_lint_runner
|
Label; Standardwert ist |
bootclasspath
|
Liste mit Labels; Standardwert ist |
compatible_javacopts
|
null; default is |
deps_checker
|
Label; Standardwert ist |
forcibly_disable_header_compilation
|
Boolescher Wert; Standardwert ist |
genclass
|
Label; Standardwert ist |
header_compiler
|
Label; Standardwert ist |
header_compiler_builtin_processors
|
Liste mit Strings; Standardwert ist |
header_compiler_direct
|
Label; Standardwert ist Die Verarbeitung von Anmerkungen wird von diesem Tool nicht unterstützt. |
ijar
|
Label; Standardwert ist |
jacocorunner
|
Label; Standardwert ist |
java_runtime
|
Label; Standardwert ist |
javabuilder
|
Label; Standardwert ist |
javabuilder_data
|
Liste mit Labels; Standardwert ist |
javabuilder_jvm_opts
|
Liste mit Strings; Standardwert ist |
javac_supports_multiplex_workers
|
Boolescher Wert; Standardwert ist |
javac_supports_worker_cancellation
|
Boolescher Wert; Standardwert ist |
javac_supports_worker_multiplex_sandboxing
|
Boolescher Wert; Standardwert ist |
javac_supports_workers
|
Boolescher Wert; Standardwert ist |
javacopts
|
Liste mit Strings; Standardwert ist |
jspecify_implicit_deps
|
Label; Standardwert ist |
jspecify_javacopts
|
Liste mit Strings; Standardwert ist |
jspecify_packages
|
Liste mit Labels; Standardwert ist |
jspecify_processor
|
Label; Standardwert ist |
jspecify_processor_class
|
String; der Standardwert ist |
jspecify_stubs
|
Liste mit Labels; Standardwert ist |
jvm_opts
|
Liste mit Strings; Standardwert ist |
misc
|
Liste mit Strings; Standardwert ist |
oneversion
|
Label; Standardwert ist |
oneversion_allowlist_for_tests
|
Label; Standardwert ist |
oneversion_whitelist
|
Label; Standardwert ist |
package_configuration
|
Liste mit Labels; Standardwert ist |
proguard_allowlister
|
Label; Standardwert ist |
reduced_classpath_incompatible_processors
|
Liste mit Strings; Standardwert ist |
singlejar
|
Label; Standardwert ist |
source_version
|
String; der Standardwert ist |
target_version
|
String; der Standardwert ist |
timezone_data
|
Label; Standardwert ist |
tools
|
Liste mit Labels; Standardwert ist |
turbine_data
|
Liste mit Labels; Standardwert ist |
turbine_jvm_opts
|
Liste mit Strings; Standardwert ist |
xlint
|
Liste mit Strings; Standardwert ist |