Reguły
- 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
Wyświetl źródło regułjava_binary(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, output_licenses, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)
Tworzy archiwum Javy („plik jar”) oraz skrypt powłoki otoki o tej samej nazwie co reguła.
Skrypt powłoki otoki używa ścieżki klasy, która zawiera między innymi plik jar dla każdej biblioteki, od której zależy dany plik binarny. Gdy uruchomisz skrypt powłoki otoki, każda niepusta zmienna środowiskowa JAVABIN
będzie miała pierwszeństwo przed wersją określoną za pomocą flagi --java_runtime_version
bazy danych.
Skrypt kodu akceptuje kilka niepowtarzalnych flag. W //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
znajdziesz listę konfigurowalnych flag i zmiennych środowiskowych akceptowanych przez kod.
Cele wynikowe niejawne
name.jar
: archiwum Java zawierające pliki klas i inne zasoby odpowiadające bezpośrednim zależnościom pliku binarnego.name-src.jar
: archiwum zawierające źródła („źródłowy plik jar”).name_deploy.jar
: archiwum Java odpowiednie do wdrożenia (skompilowane tylko na wyraźne żądanie).Kompilacja miejsca docelowego
<name>_deploy.jar
reguły powoduje utworzenie samodzielnego pliku jar z plikiem manifestu, który umożliwia uruchomienie go za pomocą poleceniajava -jar
lub opcji--singlejar
skryptu opakowania. Używanie skryptu opakowania jest preferowane w przypadkujava -jar
, ponieważ przekazuje on również flagi JVM i opcje wczytywania bibliotek natywnych.Plik jar wdrożenia zawiera wszystkie klasy, które zostałyby znalezione przez moduł ładowania klasy, który przeszukał ścieżkę klasy ze skryptu opakowania pliku binarnego od początku do końca. Zawiera też biblioteki natywne potrzebne do obsługi zależności. Są one automatycznie wczytywane do JVM w czasie działania.
Jeśli w miejscu docelowym jest określony atrybut launchera, zamiast zwykłego pliku JAR plik _deploy.jar będzie natywnym plikiem binarnym. Będzie on zawierał program uruchamiający oraz wszelkie natywne zależności (C++) reguły. Wszystkie są połączone w statycznym pliku binarnym. Bajty rzeczywistego pliku jar zostaną dołączone do tego natywnego pliku binarnego, tworząc pojedynczy blob binarny zawierający zarówno plik wykonywalny, jak i kod Java. Wynikowy plik jar możesz uruchomić bezpośrednio w taki sam sposób jak dowolny natywny plik binarny.
name_deploy-src.jar
: archiwum zawierające źródła zebrane podczas zamykania miejsca docelowego. Będą one pasować do klas w plikudeploy.jar
, chyba że pliki jar nie mają pasującego źródłowego pliku jar.
Atrybut deps
nie jest dozwolony w regule java_binary
bez srcs
. Taka reguła wymaga atrybutu main_class
dostarczonego przez runtime_deps
.
Oto częsty błąd:
java_binary( name = "DontDoThis", srcs = [ ..., "GeneratedJavaFile.java", # a generated .java file ], deps = [":generating_rule"], # rule that generates that file )
Zamiast tego:
java_binary( name = "DoThisInstead", srcs = [ ..., ":generating_rule", ], )
Argumenty
Atrybuty | |
---|---|
name |
Nazwa; wymagana Unikalna nazwa celu. Warto używać nazwy pliku źródłowego, który jest głównym punktem wejścia aplikacji (bez rozszerzenia). Jeśli na przykład punkt wejścia to Main.java , Twoja nazwa może wyglądać tak: Main .
|
deps
|
Lista etykiet; wartość domyślna to deps w typowych atrybutach zdefiniowanych przez większość reguł kompilacji.
|
srcs
|
Lista etykiet; wartość domyślna to
Pliki źródłowe typu
Pliki źródłowe typu
Reguły: jeśli reguła (zwykle
Ten argument jest prawie zawsze wymagany, chyba że atrybut |
resources
|
Lista etykiet; wartość domyślna to
Jeśli określisz zasoby, zostaną one umieszczone w pliku jar razem ze zwykłymi plikami Zasoby mogą być plikami źródłowymi lub wygenerowanymi. |
classpath_resources
|
Lista etykiet; wartość domyślna to
Lista zasobów, które muszą znajdować się w katalogu głównym drzewa Java. Jedynym celem tego atrybutu jest obsługa bibliotek zewnętrznych, które wymagają, aby ich zasoby znajdowały się w ścieżce klasy dokładnie o wartości |
create_executable
|
Wartość logiczna; nonconfigurable; wartość domyślna to java_single_jar .
|
deploy_env
|
Lista etykiet; wartość domyślna to java_binary , które reprezentują środowisko wdrożenia tego pliku binarnego.
Ustaw ten atrybut podczas tworzenia wtyczki, która będzie wczytywana przez inny zasób java_binary .Ustawienie tego atrybutu wyklucza wszystkie zależności ze ścieżki klasy środowiska wykonawczego (i pliku jar) tego pliku binarnego, które są wspólne dla tego pliku binarnego i obiektów docelowych określonych w funkcji deploy_env .
|
deploy_manifest_lines
|
Lista ciągów tekstowych; wartość domyślna to META-INF/manifest.mf wygenerowanego dla celu *_deploy.jar . Zawartość tego atrybutu nie podlega zastępowaniu „Utwórz zmienną”.
|
javacopts
|
Lista ciągów tekstowych; wartość domyślna to Te opcje kompilatora są przekazywane do javac po opcjach globalnego kompilatora. |
jvm_flags
|
Lista ciągów tekstowych; wartość domyślna to Skrypt otoki pliku binarnego Java zawiera definicję CLASSPATH (która umożliwia znalezienie wszystkich zależnych plików jar) i wywołuje odpowiedni interpreter Javy.
Wiersz poleceń wygenerowany przez skrypt otoki zawiera nazwę klasy głównej i znak Pamiętaj, że ten atrybut nie ma wpływu na dane wyjściowe |
launcher
|
Etykieta, wartość domyślna to bin/java dołączonego do pakietu JDK.
Wartość docelowa musi być typu cc_binary . Jako wartość tego atrybutu można określić każdy cc_binary , który implementuje
Java Invocation API.
Domyślnie Bazel będzie używać normalnego programu uruchamiającego JDK (bin/java lub java.exe). Powiązana flaga Pamiętaj, że zależności natywne (C++, SWIG, JNI) będą tworzone inaczej w zależności od tego, czy używasz programu uruchamiającego JDK czy innego programu uruchamiającego:
Gdy używasz dowolnego programu uruchamiającego innego niż domyślny program uruchamiający JDK, zmienia się format danych wyjściowych |
main_class
|
Ciąg znaków; wartość domyślna to main() , która ma być używana jako punkt wejścia.
Jeśli reguła używa tej opcji, nie potrzebuje listy srcs=[...] .
Dzięki temu atrybutowi można utworzyć plik wykonywalny z biblioteki Java, która zawiera już co najmniej 1 metodę main() .
Wartość tego atrybutu jest nazwą klasy, a nie pliku źródłowego. Klasa musi być dostępna w czasie działania: może być skompilowana przez tę regułę (z |
plugins
|
Lista etykiet; wartość domyślna to java_plugin określony w tym atrybucie będzie uruchamiany przy każdym kompilowaniu tej reguły. Biblioteka może też dziedziczyć wtyczki z zależności, które korzystają z zasobu exported_plugins . Zasoby wygenerowane przez wtyczkę zostaną uwzględnione w wynikowym pliku jar tej reguły.
|
resource_jars
|
Lista etykiet; wartość domyślna to |
resource_strip_prefix
|
Ciąg znaków; wartość domyślna to
Jeśli go podasz, będzie on usuwany z każdego pliku w atrybucie |
runtime_deps
|
Lista etykiet; wartość domyślna to deps , pojawią się one w ścieżce klasy w środowisku wykonawczym, ale w przeciwieństwie do nich nie będą w ścieżce klasy w czasie kompilacji. Tutaj powinny być wymienione zależności potrzebne tylko w czasie działania. Narzędzia do analizy zależności powinny ignorować cele, które pojawiają się zarówno w runtime_deps , jak i deps .
|
stamp
|
Liczba całkowita; wartość domyślna to
Opatrzone pieczęciami pliki binarne nie są odbudowywane, chyba że ich zależności ulegną zmianie. |
use_launcher
|
Wartość logiczna; wartość domyślna to Jeśli ten atrybut ma wartość false (fałsz), atrybut launcher i powiązana z nim flaga |
use_testrunner
|
Wartość logiczna; wartość domyślna to com.google.testing.junit.runner.BazelTestRunner ) jako głównego punktu wejścia programu w Javie i podaj klasę testową jako wartość właściwości systemu bazel.test_suite .
Możesz użyć tej opcji, aby zastąpić działanie domyślne, czyli użyć mechanizmu uruchamiania testów w regułach java_test , zamiast używać go w regułach java_binary . Raczej nie chcesz tego robić. Jednym z zastosowania mogą być reguły AllTest wywoływane przez inną regułę (np. do skonfigurowania bazy danych przed przeprowadzeniem testów). Reguła AllTest musi być zadeklarowana jako java_binary , ale aplikacja uruchamiająca test powinna być głównym punktem wejścia.
Nazwę klasy uruchamiania testów można zastąpić za pomocą atrybutu main_class .
|
java_import
Wyświetl źródło reguł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)
Ta reguła pozwala na używanie wstępnie skompilowanych plików .jar
jako bibliotek reguł java_library
i java_binary
.
Przykłady
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",
],
)
Argumenty
Atrybuty | |
---|---|
name |
Nazwa; wymagana Unikalna nazwa celu. |
deps
|
Lista etykiet; wartość domyślna to |
data
|
Lista etykiet; wartość domyślna to |
add_exports
|
Lista ciągów tekstowych; wartość domyślna to module lub package .
Odpowiada to flagom javac i JVM --add-exports=. |
add_opens
|
Lista ciągów tekstowych; wartość domyślna to module lub package .
Odpowiada to flagom javac i JVM --add-opens=. |
constraints
|
Lista ciągów tekstowych; wartość domyślna to |
exports
|
Lista etykiet; wartość domyślna to |
jars
|
Lista etykiet; wymagana Lista plików JAR udostępnionych do celów w Javie, które zależą od tego miejsca docelowego. |
neverlink
|
Wartość logiczna; wartość domyślna to tools.jar dla wszystkich elementów działających na standardowym JDK.
|
proguard_specs
|
Lista etykiet; wartość domyślna to android_binary w zależności od tej biblioteki.
Uwzględnione tutaj pliki mogą mieć tylko reguły idempotentne, czyli -dontnote, -dontwarn, assumenosideeffects i reguły zaczynające się od -keep. Inne opcje mogą pojawiać się tylko w parametrach Proard_specs android_binary , aby umożliwić scalenie nietautologiczne.
|
runtime_deps
|
Lista etykiet; wartość domyślna to |
srcjar
|
Etykieta, wartość domyślna to |
java_library
Wyświetl źródło reguł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)
Ta reguła kompiluje źródła i łączy je w plik .jar
.
Wyniki ogólne
libname.jar
: archiwum w Javie zawierające pliki zajęć.libname-src.jar
: archiwum zawierające źródła („źródłowy plik jar”).
Argumenty
Atrybuty | |
---|---|
name |
Nazwa; wymagana Unikalna nazwa celu. |
deps
|
Lista etykiet; wartość domyślna to deps w artykule Typowe atrybuty zdefiniowane przez większość reguł kompilacji.
Pliki jar utworzone przez reguły
Z kolei cele w atrybucie |
srcs
|
Lista etykiet; wartość domyślna to
Pliki źródłowe typu
Pliki źródłowe typu
Reguły: jeśli reguła (zwykle
Pliki źródłowe typu Pozostałe pliki są ignorowane, dopóki istnieje co najmniej 1 plik o typie opisanym powyżej. W przeciwnym razie zostanie zgłoszony błąd.
Ten argument jest prawie zawsze wymagany, chyba że podasz argument |
data
|
Lista etykiet; wartość domyślna to data w artykule Typowe atrybuty zdefiniowane przez większość reguł kompilacji.
Podczas tworzenia obiektu |
resources
|
Lista etykiet; wartość domyślna to Zasoby mogą być plikami źródłowymi lub wygenerowanymi.
Jeśli określisz zasoby, zostaną one umieszczone w pliku jar razem ze zwykłymi plikami |
add_exports
|
Lista ciągów tekstowych; wartość domyślna to module lub package .
Odpowiada to flagom javac i JVM --add-exports=. |
add_opens
|
Lista ciągów tekstowych; wartość domyślna to module lub package .
Odpowiada to flagom javac i JVM --add-opens=. |
bootclasspath
|
Etykieta, wartość domyślna to |
exported_plugins
|
Lista etykiet; wartość domyślna to java_plugin (np. podmiotów przetwarzających adnotacje), które mają być eksportowane do bibliotek bezpośrednio zależnych od tej biblioteki.
Określona lista obiektów |
exports
|
Lista etykiet; wartość domyślna to
Wyświetlenie listy reguł w tym miejscu spowoduje, że będą one dostępne dla reguł nadrzędnych, tak jakby elementy nadrzędne były od nich jawnie zależne. Nie dotyczy to zwykłych (nieeksportowanych) elementów
Podsumowanie: reguła X może uzyskać dostęp do kodu w komórce Y, jeśli istnieje między nimi ścieżka zależności rozpoczynająca się od krawędzi
Załóżmy, że A zależy od B i B zależy od C. W tym przypadku C jest przejściową zależnością typu A, więc zmiana źródeł C i ponowne skompilowanie A wszystko zostanie prawidłowo skompilowane. Dziecko (A) nie będzie jednak mogło korzystać z zajęć w języku C. Aby to umożliwić, zespół A musi zadeklarować C w elemencie Zamknięcie wyeksportowanych bibliotek jest możliwe dla wszystkich bezpośrednich reguł nadrzędnych. Oto nieco inny przykład: wartość A zależy od wartości B, B zależy od C i D, a także eksportuje C, ale nie D. Teraz A ma dostęp do C, ale nie do D. Jeśli pliki C i D wyeksportowały odpowiednio niektóre biblioteki (odpowiednio C i D), użytkownik A miałby dostęp tylko do C, ale nie D.
Ważne: wyeksportowana reguła nie jest regularną zależność. Kontynuując poprzedni przykład: jeśli usługa B eksportuje plik C i chce użyć też pliku C, musi umieścić to w osobnym obiekcie |
javabuilder_jvm_flags
|
Lista ciągów tekstowych; wartość domyślna to |
javacopts
|
Lista ciągów tekstowych; wartość domyślna to Te opcje kompilatora są przekazywane do javac po opcjach globalnego kompilatora. |
neverlink
|
Wartość logiczna; wartość domyślna to tools.jar dla wszystkich elementów działających na standardowym JDK.
Pamiętaj, że Jeśli biblioteka środowiska wykonawczego różni się od biblioteki kompilacji, musisz się upewnić, że różni się ona tylko tam, gdzie JLS zabrania umieszczania kompilatorów w tekście (i musi on dotyczyć wszystkich przyszłych wersji JLS). |
plugins
|
Lista etykiet; wartość domyślna to java_plugin określony w tym atrybucie będzie uruchamiany przy każdym utworzeniu tej reguły. Biblioteka może też dziedziczyć wtyczki z zależności, które korzystają z exported_plugins . Zasoby wygenerowane przez wtyczkę zostaną umieszczone w wynikowym pliku jar tej reguły.
|
proguard_specs
|
Lista etykiet; wartość domyślna to android_binary w zależności od tej biblioteki.
Uwzględnione tutaj pliki mogą mieć tylko reguły idempotentne, czyli -dontnote, -dontwarn, assumenosideeffects i reguły zaczynające się od -keep. Inne opcje mogą pojawiać się tylko w parametrach Proard_specs android_binary , aby umożliwić scalenie nietautologiczne.
|
resource_strip_prefix
|
Ciąg znaków; wartość domyślna to
Jeśli zostanie podany, będzie usuwany z każdego pliku w atrybucie |
runtime_deps
|
Lista etykiet; wartość domyślna to deps , pojawią się one w ścieżce klasy w środowisku wykonawczym, ale w przeciwieństwie do nich nie pojawią się w ścieżce klasy w czasie kompilacji. Tutaj należy wymienić zależności potrzebne tylko w czasie działania. Narzędzia do analizy zależności powinny ignorować cele, które pojawiają się zarówno w polu runtime_deps , jak i w deps .
|
java_lite_proto_library
Wyświetl źródło regułjava_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
generuje kod Java z plików .proto
.
deps
musi wskazywać reguły proto_library
.
Przykład:
java_library(
name = "lib",
runtime_deps = [":foo"],
)
java_lite_proto_library(
name = "foo",
deps = [":bar"],
)
proto_library(
name = "bar",
)
Argumenty
Atrybuty | |
---|---|
name |
Nazwa; wymagana Unikalna nazwa celu. |
deps
|
Lista etykiet; wartość domyślna to proto_library służących do generowania kodu Java.
|
java_proto_library
Wyświetl źródło regułjava_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
generuje kod Java z plików .proto
.
deps
musi wskazywać reguły proto_library
.
Przykład:
java_library(
name = "lib",
runtime_deps = [":foo_java_proto"],
)
java_proto_library(
name = "foo_java_proto",
deps = [":foo_proto"],
)
proto_library(
name = "foo_proto",
)
Argumenty
Atrybuty | |
---|---|
name |
Nazwa; wymagana Unikalna nazwa celu. |
deps
|
Lista etykiet; wartość domyślna to proto_library służących do generowania kodu Java.
|
java_test
Wyświetl źródło reguł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)
Reguła java_test()
kompiluje test Java. Test to binarny kod
obejmujący kod testu. Zamiast kompilowania klasy głównej zostaje wywołana główna metoda uruchamiania testu.
Cele wynikowe niejawne
name.jar
: archiwum Java.name_deploy.jar
: archiwum Java odpowiednie do wdrożenia. (Tworzenie tylko po wyraźnej prośbie). Więcej informacji znajdziesz w opisie danych wyjściowychname_deploy.jar
z pliku java_binary.
Zobacz sekcję poświęconą argumentom java_binary()
. Ta reguła obsługuje też wszystkie atrybuty wspólne dla wszystkich reguł testowych (*_test).
Przykłady
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",
],
)
Argumenty
Atrybuty | |
---|---|
name |
Nazwa; wymagana Unikalna nazwa celu. |
deps
|
Lista etykiet; wartość domyślna to deps w artykule Typowe atrybuty zdefiniowane przez większość reguł kompilacji.
|
srcs
|
Lista etykiet; wartość domyślna to
Pliki źródłowe typu
Pliki źródłowe typu
Reguły: jeśli reguła (zwykle
Ten argument jest prawie zawsze wymagany, chyba że atrybut |
data
|
Lista etykiet; wartość domyślna to data w typowych atrybutach zdefiniowanych przez większość reguł kompilacji.
|
resources
|
Lista etykiet; wartość domyślna to Zasoby mogą być plikami źródłowymi lub wygenerowanymi.
Jeśli określisz zasoby, zostaną one umieszczone w pliku jar razem ze zwykłymi plikami |
add_exports
|
Lista ciągów tekstowych; wartość domyślna to module lub package .
Odpowiada to flagom javac i JVM --add-exports=. |
add_opens
|
Lista ciągów tekstowych; wartość domyślna to module lub package .
Odpowiada to flagom javac i JVM --add-opens=. |
bootclasspath
|
Etykieta, wartość domyślna to |
classpath_resources
|
Lista etykiet; wartość domyślna to
Lista zasobów, które muszą znajdować się w katalogu głównym drzewa Java. Jedynym celem tego atrybutu jest obsługa bibliotek zewnętrznych, które wymagają, aby ich zasoby były dostępne w ścieżce klasy dokładnie w postaci |
create_executable
|
Wartość logiczna; wartość domyślna to java_single_jar .
|
deploy_manifest_lines
|
Lista ciągów tekstowych; wartość domyślna to META-INF/manifest.mf wygenerowanego dla celu *_deploy.jar . Zawartość tego atrybutu nie podlega zastępowaniu „Utwórz zmienną”.
|
javacopts
|
Lista ciągów tekstowych; wartość domyślna to Te opcje kompilatora są przekazywane do javac po opcjach globalnego kompilatora. |
jvm_flags
|
Lista ciągów tekstowych; wartość domyślna to Skrypt otoki pliku binarnego Java zawiera definicję CLASSPATH (która umożliwia znalezienie wszystkich zależnych plików jar) i wywołuje odpowiedni interpreter Javy.
Wiersz poleceń wygenerowany przez skrypt otoki zawiera nazwę klasy głównej i znak Pamiętaj, że ten atrybut nie ma wpływu na |
launcher
|
Etykieta, wartość domyślna to bin/java dołączonego do pakietu JDK.
Wartość docelowa musi być typu cc_binary . Jako wartość tego atrybutu można określić każdy obiekt cc_binary , który implementuje
interfejs Java Invocation API.
Domyślnie Bazel będzie używać normalnego programu uruchamiającego JDK (bin/java lub java.exe). Powiązana flaga Pamiętaj, że zależności natywne (C++, SWIG, JNI) będą tworzone inaczej w zależności od tego, czy używasz programu uruchamiającego JDK, czy innego:
Gdy używasz dowolnego programu uruchamiającego innego niż domyślny program uruchamiający JDK, zmienia się format danych wyjściowych |
main_class
|
Ciąg znaków; wartość domyślna to main() , która ma być używana jako punkt wejścia.
Jeśli reguła używa tej opcji, nie potrzebuje listy srcs=[...] .
Dzięki temu atrybutowi można utworzyć plik wykonywalny z biblioteki Java, która zawiera już co najmniej 1 metodę main() .
Wartość tego atrybutu jest nazwą klasy, a nie pliku źródłowego. Klasa musi być dostępna w czasie działania: może być skompilowana przez tę regułę (z |
neverlink
|
Wartość logiczna; wartość domyślna to |
plugins
|
Lista etykiet; wartość domyślna to java_plugin określony w tym atrybucie będzie uruchamiany przy każdym utworzeniu tej reguły. Biblioteka może też dziedziczyć wtyczki z zależności, które korzystają z exported_plugins . Zasoby wygenerowane przez wtyczkę zostaną umieszczone w wynikowym pliku jar tej reguły.
|
resource_strip_prefix
|
Ciąg znaków; wartość domyślna to
Jeśli zostanie podany, będzie usuwany z każdego pliku w atrybucie |
runtime_deps
|
Lista etykiet; wartość domyślna to deps , pojawią się one w ścieżce klasy w środowisku wykonawczym, ale w przeciwieństwie do nich nie pojawią się w ścieżce klasy w czasie kompilacji. Tutaj należy wymienić zależności potrzebne tylko w czasie działania. Narzędzia do analizy zależności powinny ignorować cele, które pojawiają się zarówno w polu runtime_deps , jak i w deps .
|
stamp
|
Liczba całkowita; wartość domyślna to
Opatrzone pieczęciami pliki binarne nie są odbudowywane, chyba że ich zależności ulegną zmianie. |
test_class
|
Ciąg znaków; wartość domyślna to
Domyślnie, jeśli ten argument nie jest zdefiniowany, używany jest starszy tryb, a zamiast niego używane są argumenty testowe. Ustaw flagę
Ten atrybut określa nazwę klasy Java, która ma zostać uruchomiona przez ten test. Rzadko trzeba to ustawiać. Jeśli pominiesz ten argument, zostanie on wywnioskowany na podstawie zasobu
W przypadku JUnit3 klasa testowa musi być podklasą klasy
Ten atrybut pozwala kilku regułom |
use_launcher
|
Wartość logiczna; wartość domyślna to Jeśli ten atrybut ma wartość false (fałsz), atrybut launchera i powiązana z nim flaga |
use_testrunner
|
Wartość logiczna; wartość domyślna to com.google.testing.junit.runner.BazelTestRunner ) jako głównego punktu wejścia programu w Javie i udostępnij klasę testową usłudze uruchamiającej testy jako wartość właściwości systemowej bazel.test_suite .
Możesz użyć tej opcji, aby zastąpić działanie domyślne, czyli użyć mechanizmu uruchamiania testów w regułach java_test , zamiast używać go w regułach java_binary . Raczej nie chcesz tego robić. Jednym z nich jest użycie reguł AllTest wywoływanych przez inną regułę (np. do skonfigurowania bazy danych przed przeprowadzeniem testów). Reguła AllTest musi być zadeklarowana jako java_binary , ale nadal powinna używać narzędzia do uruchamiania testów jako głównego punktu wejścia.
Nazwę klasy uruchamiania testów można zastąpić za pomocą atrybutu main_class .
|
java_package_configuration
Wyświetl źródło regułjava_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)
Konfiguracja stosowana do zbioru pakietów.
Konfiguracje można dodawać do java_toolchain.javacopts
.
Przykład:
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",
]
)
Argumenty
Atrybuty | |
---|---|
name |
Nazwa; wymagana Unikalna nazwa celu. |
data
|
Lista etykiet; wartość domyślna to |
javacopts
|
Lista ciągów tekstowych; wartość domyślna to |
output_licenses
|
Lista ciągów tekstowych; wartość domyślna to |
packages
|
Lista etykiet; wartość domyślna to package_group , do którego konfiguracja powinna zostać zastosowana.
|
java_plugin
Wyświetl źródło reguł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
definiuje wtyczki dla kompilatora Java uruchamianego przez Bazel. Obecnie jedynym obsługiwanym typem wtyczek są procesory adnotacji. Reguła java_library
lub java_binary
może uruchamiać wtyczki, w zależności od nich za pomocą atrybutu plugins
. java_library
może też automatycznie eksportować wtyczki do bibliotek, które są z nim bezpośrednio zależne, korzystając z metody exported_plugins
.
Cele wynikowe niejawne
libname.jar
: archiwum Java.
Argumenty są takie same jak java_library
z wyjątkiem dodania argumentu processor_class
.
Argumenty
Atrybuty | |
---|---|
name |
Nazwa; wymagana Unikalna nazwa celu. |
deps
|
Lista etykiet; wartość domyślna to deps w artykule Typowe atrybuty zdefiniowane przez większość reguł kompilacji.
Pliki jar utworzone przez reguły
Z kolei cele w atrybucie |
srcs
|
Lista etykiet; wartość domyślna to
Pliki źródłowe typu
Pliki źródłowe typu
Reguły: jeśli reguła (zwykle
Pliki źródłowe typu Pozostałe pliki są ignorowane, dopóki istnieje co najmniej 1 plik o typie opisanym powyżej. W przeciwnym razie zostanie zgłoszony błąd.
Ten argument jest prawie zawsze wymagany, chyba że podasz argument |
data
|
Lista etykiet; wartość domyślna to data w artykule Typowe atrybuty zdefiniowane przez większość reguł kompilacji.
Podczas tworzenia obiektu |
resources
|
Lista etykiet; wartość domyślna to Zasoby mogą być plikami źródłowymi lub wygenerowanymi.
Jeśli określisz zasoby, zostaną one umieszczone w pliku jar razem ze zwykłymi plikami |
add_exports
|
Lista ciągów tekstowych; wartość domyślna to module lub package .
Odpowiada to flagom javac i JVM --add-exports=. |
add_opens
|
Lista ciągów tekstowych; wartość domyślna to module lub package .
Odpowiada to flagom javac i JVM --add-opens=. |
bootclasspath
|
Etykieta, wartość domyślna to |
generates_api
|
Wartość logiczna; wartość domyślna to Jeśli reguła korzysta z procesora adnotacji generującego interfejs API, inne reguły w zależności od niego mogą odwoływać się do wygenerowanego kodu tylko wtedy, gdy ich działania kompilacji są zaplanowane po wygenerowaniu reguły. Ten atrybut instruuje Bazel, aby wprowadził ograniczenia harmonogramu, gdy włączona jest opcja --java_header_compilation. OSTRZEŻENIE: ten atrybut wpływa na wydajność kompilacji. Używaj go tylko wtedy, gdy to konieczne. |
javabuilder_jvm_flags
|
Lista ciągów tekstowych; wartość domyślna to |
javacopts
|
Lista ciągów tekstowych; wartość domyślna to Te opcje kompilatora są przekazywane do javac po opcjach globalnego kompilatora. |
neverlink
|
Wartość logiczna; wartość domyślna to tools.jar dla wszystkich elementów działających na standardowym JDK.
Pamiętaj, że Jeśli biblioteka środowiska wykonawczego różni się od biblioteki kompilacji, musisz się upewnić, że różni się ona tylko tam, gdzie JLS zabrania umieszczania kompilatorów w tekście (i musi on dotyczyć wszystkich przyszłych wersji JLS). |
output_licenses
|
Lista ciągów tekstowych; wartość domyślna to |
plugins
|
Lista etykiet; wartość domyślna to java_plugin określony w tym atrybucie będzie uruchamiany przy każdym utworzeniu tej reguły. Biblioteka może też dziedziczyć wtyczki z zależności, które korzystają z exported_plugins . Zasoby wygenerowane przez wtyczkę zostaną umieszczone w wynikowym pliku jar tej reguły.
|
processor_class
|
Ciąg znaków; wartość domyślna to |
proguard_specs
|
Lista etykiet; wartość domyślna to android_binary w zależności od tej biblioteki.
Uwzględnione tutaj pliki mogą mieć tylko reguły idempotentne, czyli -dontnote, -dontwarn, assumenosideeffects i reguły zaczynające się od -keep. Inne opcje mogą pojawiać się tylko w parametrach Proard_specs android_binary , aby umożliwić scalenie nietautologiczne.
|
resource_strip_prefix
|
Ciąg znaków; wartość domyślna to
Jeśli zostanie podany, będzie usuwany z każdego pliku w atrybucie |
java_runtime
Wyświetl źródło reguł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)
Określa konfigurację środowiska wykonawczego Java.
Przykład:
java_runtime(
name = "jdk-9-ea+153",
srcs = glob(["jdk9-ea+153/**"]),
java_home = "jdk9-ea+153",
)
Argumenty
Atrybuty | |
---|---|
name |
Nazwa; wymagana Unikalna nazwa celu. |
srcs
|
Lista etykiet; wartość domyślna to |
default_cds
|
Etykieta, wartość domyślna to java_runtime . Gdy w miejscu docelowym java_binary jest włączona funkcja hermetyczna, a cel nie udostępnia własnego archiwum CDS przez określenie atrybutu classlist , domyślny kod CDS java_runtime jest pakowany do pliku JAR do wdrożenia hermetycznego.
|
hermetic_srcs
|
Lista etykiet; wartość domyślna to |
hermetic_static_libs
|
Lista etykiet; wartość domyślna to |
java
|
Etykieta, wartość domyślna to |
java_home
|
Ciąg znaków; wartość domyślna to srcs i java muszą być puste.
|
lib_ct_sym
|
Etykieta, wartość domyślna to --release . Jeśli go nie podasz, a w srcs jest dokładnie 1 plik, którego ścieżka kończy się na /lib/ct.sym , zostanie użyty ten plik.
|
lib_modules
|
Etykieta, wartość domyślna to |
output_licenses
|
Lista ciągów tekstowych; wartość domyślna to |
version
|
Liczba całkowita; wartość domyślna to Runtime.version().feature() .
|
java_toolchain
Wyświetl źródło reguł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_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)
Określa konfigurację kompilatora Java. Użyty łańcuch narzędzi można zmienić za pomocą argumentu --java_toolchain. Zwykle nie należy tworzyć takich reguł, chyba że chcesz dostroić kompilator Java.
Przykłady
Prosty przykład to:
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",
)
Argumenty
Atrybuty | |
---|---|
name |
Nazwa; wymagana Unikalna nazwa celu. |
android_lint_data
|
Lista etykiet; wartość domyślna to |
android_lint_jvm_opts
|
Lista ciągów tekstowych; wartość domyślna to |
android_lint_opts
|
Lista ciągów tekstowych; wartość domyślna to |
android_lint_package_configuration
|
Lista etykiet; wartość domyślna to |
android_lint_runner
|
Etykieta, wartość domyślna to |
bootclasspath
|
Lista etykiet; wartość domyślna to |
compatible_javacopts
|
null; default is |
deps_checker
|
Etykieta, wartość domyślna to |
forcibly_disable_header_compilation
|
Wartość logiczna; wartość domyślna to |
genclass
|
Etykieta, wartość domyślna to |
header_compiler
|
Etykieta, wartość domyślna to |
header_compiler_builtin_processors
|
Lista ciągów tekstowych; wartość domyślna to |
header_compiler_direct
|
Etykieta, wartość domyślna to To narzędzie nie obsługuje przetwarzania adnotacji. |
ijar
|
Etykieta, wartość domyślna to |
jacocorunner
|
Etykieta, wartość domyślna to |
java_runtime
|
Etykieta, wartość domyślna to |
javabuilder
|
Etykieta, wartość domyślna to |
javabuilder_data
|
Lista etykiet; wartość domyślna to |
javabuilder_jvm_opts
|
Lista ciągów tekstowych; wartość domyślna to |
javac_supports_multiplex_workers
|
Wartość logiczna; wartość domyślna to |
javac_supports_worker_cancellation
|
Wartość logiczna; wartość domyślna to |
javac_supports_worker_multiplex_sandboxing
|
Wartość logiczna; wartość domyślna to |
javac_supports_workers
|
Wartość logiczna; wartość domyślna to |
javacopts
|
Lista ciągów tekstowych; wartość domyślna to |
jspecify_implicit_deps
|
Etykieta, wartość domyślna to |
jspecify_javacopts
|
Lista ciągów tekstowych; wartość domyślna to |
jspecify_packages
|
Lista etykiet; wartość domyślna to |
jspecify_processor
|
Etykieta, wartość domyślna to |
jspecify_processor_class
|
Ciąg znaków; wartość domyślna to |
jspecify_stubs
|
Lista etykiet; wartość domyślna to |
jvm_opts
|
Lista ciągów tekstowych; wartość domyślna to |
misc
|
Lista ciągów tekstowych; wartość domyślna to |
oneversion
|
Etykieta, wartość domyślna to |
oneversion_allowlist_for_tests
|
Etykieta, wartość domyślna to |
oneversion_whitelist
|
Etykieta, wartość domyślna to |
package_configuration
|
Lista etykiet; wartość domyślna to |
proguard_allowlister
|
Etykieta, wartość domyślna to |
reduced_classpath_incompatible_processors
|
Lista ciągów tekstowych; wartość domyślna to |
singlejar
|
Etykieta, wartość domyślna to |
source_version
|
Ciąg znaków; wartość domyślna to |
target_version
|
Ciąg znaków; wartość domyślna to |
timezone_data
|
Etykieta, wartość domyślna to |
tools
|
Lista etykiet; wartość domyślna to |
turbine_data
|
Lista etykiet; wartość domyślna to |
turbine_jvm_opts
|
Lista ciągów tekstowych; wartość domyślna to |
xlint
|
Lista ciągów tekstowych; wartość domyślna to |