Regole
- 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
Visualizza l'origine della regolajava_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)
Crea un archivio Java ("file jar") e uno script shell di wrapper con lo stesso nome della regola.
Lo script shell del wrapper utilizza un classpath che include, tra le altre cose, un file jar per ogni
libreria da cui dipende il programma binario. Quando esegui lo script shell del wrapper, qualsiasi variabile di ambiente JAVABIN
non vuota avrà la precedenza sulla versione specificata tramite il flag --java_runtime_version
di Bazel.
Lo script wrapper accetta diversi flag univoci. Consulta
//src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
per un elenco di flag configurabili e variabili di ambiente accettati dal wrapper.
Target di output impliciti
name.jar
: un archivio Java, contenente i file di classe e altre risorse corrispondenti alle dipendenze dirette del programma binario.name-src.jar
: un archivio contenente le fonti ("jar di origine").name_deploy.jar
: un archivio Java adatto per il deployment (creato solo se richiesto esplicitamente).La creazione del target
<name>_deploy.jar
per la regola crea un file jar indipendente con un manifest che ne consente l'esecuzione con il comandojava -jar
o con l'opzione--singlejar
dello script wrapper. L'utilizzo dello script wrapper è preferibile rispetto ajava -jar
, perché trasmette anche i flag JVM e le opzioni per caricare le librerie native.Il file jar del deployment contiene tutte le classi che potrebbero essere trovate da un classloader che ha cercato il classpath dallo script wrapper del file binario dall'inizio alla fine. Contiene inoltre le librerie native necessarie per le dipendenze. Questi vengono caricati automaticamente nella JVM in fase di runtime.
Se il tuo target specifica un attributo launcher, anziché un normale file JAR, _deploy.jar sarà un programma binario nativo. Conterrà Avvio app ed eventuali dipendenze native (C++) della regola, il tutto collegato in un file binario statico. I byte del file jar effettivi verranno aggiunti al programma binario nativo, creando un singolo BLOB binario contenente sia l'eseguibile che il codice Java. Puoi eseguire direttamente il file jar risultante, come faresti con qualsiasi programma binario nativo.
name_deploy-src.jar
: un archivio contenente le fonti raccolte dalla chiusura transitiva del target. Questi valori corrisponderanno alle classi indeploy.jar
, tranne nei casi in cui i jar non hanno un jar di origine corrispondente.
Un attributo deps
non è consentito in una regola java_binary
senza
srcs
; una regola di questo tipo richiede un
main_class
fornito da
runtime_deps
.
Lo snippet di codice riportato di seguito illustra un errore comune:
java_binary( name = "DontDoThis", srcs = [ ..., "GeneratedJavaFile.java", # a generated .java file ], deps = [":generating_rule"], # rule that generates that file )
Procedi nel seguente modo:
java_binary( name = "DoThisInstead", srcs = [ ..., ":generating_rule", ], )
Argomenti
Attributi | |
---|---|
name |
Name (Nome), obbligatorio Un nome univoco per il target. È buona norma utilizzare il nome del file sorgente che è il punto di ingresso principale dell'applicazione (meno l'estensione). Ad esempio, se il punto di ingresso è chiamato Main.java , il nome potrebbe essere Main .
|
deps
|
Elenco di etichette; il valore predefinito è deps nella sezione Attributi tipici definiti dalla maggior parte delle regole di build.
|
srcs
|
Elenco di etichette; il valore predefinito è
I file di origine di tipo
I file sorgente di tipo
Regole: se la regola (in genere
Questo argomento è quasi sempre obbligatorio, eccetto se un attributo |
resources
|
Elenco di etichette; il valore predefinito è
Se vengono specificate le risorse, verranno raggruppate nel jar insieme ai consueti file Le risorse possono essere file di origine o file generati. |
classpath_resources
|
Elenco di etichette; il valore predefinito è
Un elenco di risorse che devono trovarsi nella directory radice dell'albero Java. L'unico scopo di questo attributo è supportare librerie di terze parti che richiedono che le loro risorse vengano trovate in classpath esattamente come |
create_executable
|
Valore booleano; non configurabile; il valore predefinito è java_single_jar .
|
deploy_env
|
Elenco di etichette; il valore predefinito è java_binary che rappresentano l'ambiente di deployment per questo programma binario.
Imposta questo attributo durante la creazione di un plug-in che verrà caricato da un altro elemento java_binary .L'impostazione di questo attributo esclude tutte le dipendenze dal classpath di runtime (e dal file jar del deployment) di questo programma binario, condivise tra questo programma binario e le destinazioni specificate in deploy_env .
|
deploy_manifest_lines
|
Elenco di stringhe; il valore predefinito è META-INF/manifest.mf generato per il target *_deploy.jar . I contenuti di questo attributo non sono soggetti
alla sostituzione "Crea variabile".
|
javacopts
|
Elenco di stringhe; il valore predefinito è Queste opzioni del compilatore vengono passate a javac dopo le opzioni del compilatore globale. |
jvm_flags
|
Elenco di stringhe; il valore predefinito è Lo script wrapper per un file binario Java include una definizione CLASSPATH (per trovare tutti i jar dipendenti) e richiama l'interprete Java corretto.
La riga di comando generata dallo script wrapper include il nome della classe principale seguito da Tieni presente che questo attributo non ha alcun effetto sugli output di |
launcher
|
Etichetta; il valore predefinito è bin/java incluso con il JDK.
Il target deve essere un cc_binary . Qualsiasi valore cc_binary che implementa l'
API Java Invocation può essere specificato come valore per questo attributo.
Per impostazione predefinita, Bazel utilizza il normale launcher JDK (bin/java o java.exe). Il flag correlato Tieni presente che le dipendenze native (C++, SWIG, JNI) verranno create in modo diverso a seconda che utilizzi l'Avvio app JDK o un altro:
Quando utilizzi un'utilità di avvio diversa da quella predefinita JDK, il formato dell'output |
main_class
|
Stringa; il valore predefinito è main() da utilizzare come punto di ingresso.
Se una regola utilizza questa opzione, non ha bisogno di un elenco srcs=[...] .
Quindi, con questo attributo è possibile creare un eseguibile da una libreria Java che contiene già uno o più metodi main() .
Il valore di questo attributo è un nome di classe, non un file di origine. La classe deve essere disponibile in fase di runtime: può essere compilata da questa regola (da |
plugins
|
Elenco di etichette; il valore predefinito è java_plugin specificato in questo attributo verrà eseguito ogni volta che viene creata questa regola. Una libreria può anche ereditare i plug-in da dipendenze che utilizzano exported_plugins . Le risorse generate dal plug-in verranno incluse nel jar risultante di questa regola.
|
resource_jars
|
Elenco di etichette; il valore predefinito è |
resource_strip_prefix
|
Stringa; il valore predefinito è
Se specificato, questo prefisso del percorso viene rimosso da tutti i file nell'attributo |
runtime_deps
|
Elenco di etichette; il valore predefinito è deps , questi verranno visualizzati sul classpath di runtime, ma a differenza di loro, non sul classpath in fase di compilazione. Le dipendenze necessarie solo in fase di runtime devono essere elencate qui. Gli strumenti di analisi delle dipendenze devono ignorare i target visualizzati in
runtime_deps e deps .
|
stamp
|
Numero intero; il valore predefinito è
I file binari stampati non vengono ricreati a meno che le loro dipendenze non cambino. |
use_launcher
|
Valore booleano; il valore predefinito è Se questo attributo è impostato su false, l'attributo Avvio app e il relativo flag |
use_testrunner
|
Valore booleano; il valore predefinito è com.google.testing.junit.runner.BazelTestRunner ) come punto di ingresso principale per un programma Java e fornisci la classe di test all'esecutore del test come valore della proprietà di sistema bazel.test_suite .
Puoi utilizzarla per eseguire l'override del comportamento predefinito, ovvero utilizzare l'esecutore del test per le regole java_test e non per le regole java_binary . È improbabile che tu voglia farlo. Un utilizzo è per le regole AllTest
richiamate da un'altra regola (ad esempio per configurare un database
prima di eseguire i test). La regola AllTest deve essere dichiarata come java_binary , ma deve comunque utilizzare l'esecutore del test come punto di ingresso principale.
Il nome di una classe dell'esecutore del test può essere sostituito con l'attributo main_class .
|
java_import
Visualizza l'origine della regolajava_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)
Questa regola consente l'utilizzo di file .jar
precompilati come librerie per le regole java_library
e java_binary
.
Esempi
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",
],
)
Argomenti
Attributi | |
---|---|
name |
Name (Nome), obbligatorio Un nome univoco per il target. |
deps
|
Elenco di etichette; il valore predefinito è |
data
|
Elenco di etichette; il valore predefinito è |
add_exports
|
Elenco di stringhe; il valore predefinito è module o package specificati.
Corrisponde ai flag javac e JVM --add-exports=. |
add_opens
|
Elenco di stringhe; il valore predefinito è module o package .
Corrisponde ai flag javac e JVM --add-opens=. |
constraints
|
Elenco di stringhe; il valore predefinito è |
exports
|
Elenco di etichette; il valore predefinito è |
jars
|
Elenco di etichette; obbligatorio L'elenco di file JAR forniti alle destinazioni Java che dipendono da questa destinazione. |
neverlink
|
Valore booleano; il valore predefinito è tools.jar per qualsiasi file in esecuzione su un JDK standard.
|
proguard_specs
|
Elenco di etichette; il valore predefinito è android_binary a seconda di questa libreria.
I file inclusi qui devono avere solo regole idempotenti, ovvero -dontnote, -dontwarn,
assumenosideeffects e regole che iniziano con -keep. Altre opzioni possono essere visualizzate solo in proguard_specs di android_binary , per garantire unioni non tautologiche.
|
runtime_deps
|
Elenco di etichette; il valore predefinito è |
srcjar
|
Etichetta; il valore predefinito è |
java_library
Visualizza l'origine della regolajava_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)
Questa regola compila e collega le origini a un file .jar
.
Output impliciti
libname.jar
: un archivio Java contenente i file del corso.libname-src.jar
: un archivio contenente le fonti ("jar di origine").
Argomenti
Attributi | |
---|---|
name |
Name (Nome), obbligatorio Un nome univoco per il target. |
deps
|
Elenco di etichette; il valore predefinito è deps nella sezione Attributi tipici definiti dalla maggior parte delle regole di build.
I jar creati in base alle regole
Al contrario, le destinazioni nell'attributo |
srcs
|
Elenco di etichette; il valore predefinito è
I file di origine di tipo
I file sorgente di tipo
Regole: se la regola (in genere
I file di origine di tipo Tutti gli altri file vengono ignorati, purché sia presente almeno un file del tipo descritto in precedenza. In caso contrario, viene segnalato un errore.
Questo argomento è quasi sempre obbligatorio, tranne se specifichi l'argomento |
data
|
Elenco di etichette; il valore predefinito è data nella sezione Attributi tipici definiti dalla maggior parte delle regole di build.
Quando crei un |
resources
|
Elenco di etichette; il valore predefinito è Le risorse possono essere file di origine o file generati.
Se vengono specificate le risorse, verranno raggruppate nel jar insieme ai consueti file |
add_exports
|
Elenco di stringhe; il valore predefinito è module o package specificati.
Corrisponde ai flag javac e JVM --add-exports=. |
add_opens
|
Elenco di stringhe; il valore predefinito è module o package .
Corrisponde ai flag javac e JVM --add-opens=. |
bootclasspath
|
Etichetta; il valore predefinito è |
exported_plugins
|
Elenco di etichette; il valore predefinito è java_plugin (ad es. processori di annotazione) da esportare nelle librerie che dipendono direttamente da questa libreria.
L'elenco specificato di |
exports
|
Elenco di etichette; il valore predefinito è
Le regole elencate qui le renderanno disponibili per le regole padre, come se le regole principali dipendessero esplicitamente
da queste regole. Questo non è valido per
Riepilogo: una regola X può accedere al codice in Y se esiste un percorso di dipendenza che inizia con un bordo
Supponiamo che A dipenda da B e che B dipenda da C. In questo caso C è una dipendenza transitiva di A, quindi se cambi le origini di C e ricrea A, puoi ricreare tutto correttamente. ma A non potrà utilizzare i corsi in C. Per consentirlo, A deve dichiarare C nel suo La chiusura delle librerie esportate è disponibile per tutte le regole principali dirette. Prendiamo un esempio leggermente diverso: A dipende da B, B dipende da C e D ed esporta anche C, ma non D. Ora A ha accesso a C ma non a D. Ora, se C e D esportavano alcune librerie, rispettivamente C' e D', A poteva accedere solo a C', ma non a D'.
Importante: una regola esportata non è una dipendenza regolare. Continuando con l'esempio precedente, se B esporta C e vuole utilizzare anche C, deve elencarlo anche nel proprio |
javabuilder_jvm_flags
|
Elenco di stringhe; il valore predefinito è |
javacopts
|
Elenco di stringhe; il valore predefinito è Queste opzioni del compilatore vengono passate a javac dopo le opzioni del compilatore globale. |
neverlink
|
Valore booleano; il valore predefinito è tools.jar per qualsiasi file eseguito su un JDK standard.
Tieni presente che Se la libreria di runtime è diversa dalla libreria di compilazione, devi assicurarti che differisca soltanto nelle posizioni in cui il JLS vieta l'incorporamento (e questo deve essere valido per tutte le versioni future del JLS). |
plugins
|
Elenco di etichette; il valore predefinito è java_plugin specificato in questo attributo verrà eseguito ogni volta che viene creata questa regola. Una libreria può anche ereditare i plug-in da dipendenze che utilizzano exported_plugins . Le risorse
generate dal plug-in saranno incluse nel jar risultante di questa regola.
|
proguard_specs
|
Elenco di etichette; il valore predefinito è android_binary a seconda di questa libreria.
I file inclusi qui devono avere solo regole idempotenti, ovvero -dontnote, -dontwarn,
assumenosideeffects e regole che iniziano con -keep. Altre opzioni possono essere visualizzate solo in proguard_specs di android_binary , per garantire unioni non tautologiche.
|
resource_strip_prefix
|
Stringa; il valore predefinito è
Se specificato, questo prefisso del percorso viene rimosso da tutti i file nell'attributo |
runtime_deps
|
Elenco di etichette; il valore predefinito è deps , verranno visualizzati sul classpath di runtime, ma a differenza di
loro, non sul classpath in fase di compilazione. Le dipendenze necessarie solo in fase di runtime
devono essere elencate qui. Gli strumenti di analisi delle dipendenze devono ignorare i target visualizzati in runtime_deps e deps .
|
java_lite_proto_library
Visualizza l'origine della regolajava_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
genera codice Java dai file .proto
.
deps
deve puntare alle regole proto_library
.
Esempio:
java_library(
name = "lib",
runtime_deps = [":foo"],
)
java_lite_proto_library(
name = "foo",
deps = [":bar"],
)
proto_library(
name = "bar",
)
Argomenti
Attributi | |
---|---|
name |
Name (Nome), obbligatorio Un nome univoco per il target. |
deps
|
Elenco di etichette; il valore predefinito è proto_library per cui generare codice Java.
|
java_proto_library
Visualizza l'origine della regolajava_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
genera codice Java dai file .proto
.
deps
deve puntare alle regole proto_library
.
Esempio:
java_library(
name = "lib",
runtime_deps = [":foo_java_proto"],
)
java_proto_library(
name = "foo_java_proto",
deps = [":foo_proto"],
)
proto_library(
name = "foo_proto",
)
Argomenti
Attributi | |
---|---|
name |
Name (Nome), obbligatorio Un nome univoco per il target. |
deps
|
Elenco di etichette; il valore predefinito è proto_library per cui generare codice Java.
|
java_test
Visualizza l'origine della regolajava_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)
Una regola java_test()
compila un test Java. Un test è un wrapper binario
che circonda il codice di test. Viene richiamato il metodo principale dell'esecutore del test anziché compilare la classe principale.
Target di output impliciti
name.jar
: un archivio Java.name_deploy.jar
: un archivio Java adatto per il deployment. (Creata solo se richiesta esplicitamente). Per maggiori dettagli, consulta la descrizione dell'outputname_deploy.jar
da java_binary.
Vedi la sezione sugli argomenti java_binary()
. Questa regola supporta anche tutti gli attributi comuni a tutte le regole di test (*_test).
Esempi
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",
],
)
Argomenti
Attributi | |
---|---|
name |
Name (Nome), obbligatorio Un nome univoco per il target. |
deps
|
Elenco di etichette; il valore predefinito è deps nella sezione Attributi tipici definiti dalla maggior parte delle regole di build.
|
srcs
|
Elenco di etichette; il valore predefinito è
I file di origine di tipo
I file sorgente di tipo
Regole: se la regola (in genere
Questo argomento è quasi sempre obbligatorio, eccetto se un attributo |
data
|
Elenco di etichette; il valore predefinito è data nella sezione Attributi tipici definiti dalla maggior parte delle regole di build.
|
resources
|
Elenco di etichette; il valore predefinito è Le risorse possono essere file di origine o file generati.
Se vengono specificate le risorse, verranno raggruppate nel jar insieme ai consueti file |
add_exports
|
Elenco di stringhe; il valore predefinito è module o package specificati.
Corrisponde ai flag javac e JVM --add-exports=. |
add_opens
|
Elenco di stringhe; il valore predefinito è module o package .
Corrisponde ai flag javac e JVM --add-opens=. |
bootclasspath
|
Etichetta; il valore predefinito è |
classpath_resources
|
Elenco di etichette; il valore predefinito è
Un elenco di risorse che devono trovarsi nella directory radice dell'albero Java. L'unico scopo di questo attributo è supportare le librerie di terze parti che richiedono che le loro risorse siano trovate in classpath esattamente come |
create_executable
|
Valore booleano; il valore predefinito è java_single_jar .
|
deploy_manifest_lines
|
Elenco di stringhe; il valore predefinito è META-INF/manifest.mf generato per il target *_deploy.jar . I contenuti di questo attributo non sono soggetti alla
sostituzione "Crea variabile".
|
javacopts
|
Elenco di stringhe; il valore predefinito è Queste opzioni del compilatore vengono passate a javac dopo le opzioni del compilatore globale. |
jvm_flags
|
Elenco di stringhe; il valore predefinito è Lo script wrapper per un file binario Java include una definizione CLASSPATH (per trovare tutti i jar dipendenti) e richiama l'interprete Java corretto.
La riga di comando generata dallo script wrapper include il nome della classe principale seguito da Tieni presente che questo attributo non ha alcun effetto su |
launcher
|
Etichetta; il valore predefinito è bin/java incluso con il JDK.
Il target deve essere un cc_binary . Qualsiasi valore cc_binary che implementa l'
API Java Invocation può essere specificato come valore per questo attributo.
Per impostazione predefinita, Bazel utilizza il normale launcher JDK (bin/java o java.exe). Il flag correlato Tieni presente che le dipendenze native (C++, SWIG, JNI) verranno create in modo diverso a seconda che tu stia utilizzando l'Avvio app JDK o un altro:
Quando utilizzi un'utilità di avvio app diversa da quella predefinita JDK, il formato dell'output |
main_class
|
Stringa; il valore predefinito è main() da utilizzare come punto di ingresso.
Se una regola utilizza questa opzione, non ha bisogno di un elenco srcs=[...] .
Quindi, con questo attributo è possibile creare un eseguibile da una libreria Java che contiene già uno o più metodi main() .
Il valore di questo attributo è un nome di classe, non un file di origine. La classe deve essere disponibile in fase di runtime: può essere compilata da questa regola (da |
neverlink
|
Valore booleano; il valore predefinito è |
plugins
|
Elenco di etichette; il valore predefinito è java_plugin specificato in questo attributo verrà eseguito ogni volta che viene creata questa regola. Una libreria può anche ereditare i plug-in da dipendenze che utilizzano exported_plugins . Le risorse
generate dal plug-in saranno incluse nel jar risultante di questa regola.
|
resource_strip_prefix
|
Stringa; il valore predefinito è
Se specificato, questo prefisso del percorso viene rimosso da tutti i file nell'attributo |
runtime_deps
|
Elenco di etichette; il valore predefinito è deps , verranno visualizzati sul classpath di runtime, ma a differenza di
loro, non sul classpath in fase di compilazione. Le dipendenze necessarie solo in fase di runtime
devono essere elencate qui. Gli strumenti di analisi delle dipendenze devono ignorare i target visualizzati in runtime_deps e deps .
|
stamp
|
Numero intero; il valore predefinito è
I file binari stampati non vengono ricreati a meno che le loro dipendenze non cambino. |
test_class
|
Stringa; il valore predefinito è
Per impostazione predefinita, se questo argomento non è definito, viene utilizzata la modalità legacy e vengono utilizzati gli argomenti di test. Imposta il flag
Questo attributo specifica il nome di una classe Java che deve essere eseguita da questo test. È raro che sia necessario impostare questa opzione. Se questo argomento viene omesso,
verrà dedotto utilizzando
Per JUnit3, la classe di test deve essere una sottoclasse
Questo attributo consente a più regole |
use_launcher
|
Valore booleano; il valore predefinito è Se questo attributo è impostato su false, l'attributo Avvio app e il relativo flag |
use_testrunner
|
Valore booleano; il valore predefinito è com.google.testing.junit.runner.BazelTestRunner ) come punto di ingresso principale per un programma Java e fornisci la classe di test all'esecutore del test come valore della proprietà di sistema bazel.test_suite .
Puoi utilizzarla per eseguire l'override del comportamento predefinito, ovvero utilizzare l'esecutore del test per le regole java_test e non per le regole java_binary . È improbabile
che tu voglia farlo. Un utilizzo è per le regole AllTest richiamate da un'altra regola (ad esempio per configurare un database prima di eseguire i test). La regola AllTest deve essere dichiarata come java_binary , ma deve comunque utilizzare l'esecutore del test come punto di ingresso principale.
Il nome di una classe dell'esecutore del test può essere sostituito con l'attributo main_class .
|
java_package_configuration
Visualizza l'origine della regolajava_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)
Configurazione da applicare a un insieme di pacchetti.
È possibile aggiungere configurazioni a java_toolchain.javacopts
.
Esempio:
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",
]
)
Argomenti
Attributi | |
---|---|
name |
Name (Nome), obbligatorio Un nome univoco per il target. |
data
|
Elenco di etichette; il valore predefinito è |
javacopts
|
Elenco di stringhe; il valore predefinito è |
output_licenses
|
Elenco di stringhe; il valore predefinito è |
packages
|
Elenco di etichette; il valore predefinito è package_group
a cui deve essere applicata la configurazione.
|
java_plugin
Visualizza l'origine della regolajava_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
definisce i plug-in per il compilatore Java eseguito da Bazel. Al momento, l'unico tipo di plug-in supportati sono i processori di annotazioni. Una regola java_library
o
java_binary
può eseguire plug-in in base al loro valore tramite l'attributo
plugins
. Un java_library
può anche esportare automaticamente i plug-in nelle librerie che
dipendono direttamente da questo plug-in utilizzando
exported_plugins
.
Target di output impliciti
libname.jar
: un archivio Java.
Gli argomenti sono identici a java_library
, ad eccezione dell'aggiunta dell'argomento processor_class
.
Argomenti
Attributi | |
---|---|
name |
Name (Nome), obbligatorio Un nome univoco per il target. |
deps
|
Elenco di etichette; il valore predefinito è deps nella sezione Attributi tipici definiti dalla maggior parte delle regole di build.
I jar creati in base alle regole
Al contrario, le destinazioni nell'attributo |
srcs
|
Elenco di etichette; il valore predefinito è
I file di origine di tipo
I file sorgente di tipo
Regole: se la regola (in genere
I file di origine di tipo Tutti gli altri file vengono ignorati, purché sia presente almeno un file del tipo descritto in precedenza. In caso contrario, viene segnalato un errore.
Questo argomento è quasi sempre obbligatorio, tranne se specifichi l'argomento |
data
|
Elenco di etichette; il valore predefinito è data nella sezione Attributi tipici definiti dalla maggior parte delle regole di build.
Quando crei un |
resources
|
Elenco di etichette; il valore predefinito è Le risorse possono essere file di origine o file generati.
Se vengono specificate le risorse, verranno raggruppate nel jar insieme ai consueti file |
add_exports
|
Elenco di stringhe; il valore predefinito è module o package specificati.
Corrisponde ai flag javac e JVM --add-exports=. |
add_opens
|
Elenco di stringhe; il valore predefinito è module o package .
Corrisponde ai flag javac e JVM --add-opens=. |
bootclasspath
|
Etichetta; il valore predefinito è |
generates_api
|
Valore booleano; il valore predefinito è Se una regola utilizza un processore di annotazione che genera un'API, le altre regole a seconda di questo possono fare riferimento al codice generato solo se le relative azioni di compilazione vengono pianificate dopo la regola di generazione. Questo attributo indica a Bazel di introdurre vincoli di pianificazione quando --java_header_compilation è abilitato. AVVISO: questo attributo influisce sulle prestazioni della build. Utilizzalo solo se necessario. |
javabuilder_jvm_flags
|
Elenco di stringhe; il valore predefinito è |
javacopts
|
Elenco di stringhe; il valore predefinito è Queste opzioni del compilatore vengono passate a javac dopo le opzioni del compilatore globale. |
neverlink
|
Valore booleano; il valore predefinito è tools.jar per qualsiasi file eseguito su un JDK standard.
Tieni presente che Se la libreria di runtime è diversa dalla libreria di compilazione, devi assicurarti che differisca soltanto nelle posizioni in cui il JLS vieta l'incorporamento (e questo deve essere valido per tutte le versioni future del JLS). |
output_licenses
|
Elenco di stringhe; il valore predefinito è |
plugins
|
Elenco di etichette; il valore predefinito è java_plugin specificato in questo attributo verrà eseguito ogni volta che viene creata questa regola. Una libreria può anche ereditare i plug-in da dipendenze che utilizzano exported_plugins . Le risorse
generate dal plug-in saranno incluse nel jar risultante di questa regola.
|
processor_class
|
Stringa; il valore predefinito è |
proguard_specs
|
Elenco di etichette; il valore predefinito è android_binary a seconda di questa libreria.
I file inclusi qui devono avere solo regole idempotenti, ovvero -dontnote, -dontwarn,
assumenosideeffects e regole che iniziano con -keep. Altre opzioni possono essere visualizzate solo in proguard_specs di android_binary , per garantire unioni non tautologiche.
|
resource_strip_prefix
|
Stringa; il valore predefinito è
Se specificato, questo prefisso del percorso viene rimosso da tutti i file nell'attributo |
java_runtime
Visualizza l'origine della regolajava_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)
Specifica la configurazione per un runtime Java.
Esempio:
java_runtime(
name = "jdk-9-ea+153",
srcs = glob(["jdk9-ea+153/**"]),
java_home = "jdk9-ea+153",
)
Argomenti
Attributi | |
---|---|
name |
Name (Nome), obbligatorio Un nome univoco per il target. |
srcs
|
Elenco di etichette; il valore predefinito è |
default_cds
|
Etichetta; il valore predefinito è java_runtime ermetico. Quando ermetica è abilitata per un target java_binary e la destinazione non fornisce il proprio archivio CDS specificando l'attributo classlist , il CDS predefinito di java_runtime viene pacchettizzato nel JAR di deployment ermetico.
|
hermetic_srcs
|
Elenco di etichette; il valore predefinito è |
hermetic_static_libs
|
Elenco di etichette; il valore predefinito è |
java
|
Etichetta; il valore predefinito è |
java_home
|
Stringa; il valore predefinito è srcs e java devono essere vuoti.
|
lib_ct_sym
|
Etichetta; il valore predefinito è --release . Se non specificato e
in srcs è presente esattamente un file il cui percorso termina con
/lib/ct.sym , viene utilizzato quel file.
|
lib_modules
|
Etichetta; il valore predefinito è |
output_licenses
|
Elenco di stringhe; il valore predefinito è |
version
|
Numero intero; il valore predefinito è Runtime.version().feature() .
|
java_toolchain
Visualizza l'origine della regolajava_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)
Specifica la configurazione per il compilatore Java. La toolchain da usare può essere modificata tramite l'argomento --java_toolchain. Normalmente non dovresti scrivere questo tipo di regole, a meno che tu non voglia ottimizzare il tuo compilatore Java.
Esempi
Un esempio semplice potrebbe essere:
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",
)
Argomenti
Attributi | |
---|---|
name |
Name (Nome), obbligatorio Un nome univoco per il target. |
android_lint_data
|
Elenco di etichette; il valore predefinito è |
android_lint_jvm_opts
|
Elenco di stringhe; il valore predefinito è |
android_lint_opts
|
Elenco di stringhe; il valore predefinito è |
android_lint_package_configuration
|
Elenco di etichette; il valore predefinito è |
android_lint_runner
|
Etichetta; il valore predefinito è |
bootclasspath
|
Elenco di etichette; il valore predefinito è |
compatible_javacopts
|
null; default is |
deps_checker
|
Etichetta; il valore predefinito è |
forcibly_disable_header_compilation
|
Valore booleano; il valore predefinito è |
genclass
|
Etichetta; il valore predefinito è |
header_compiler
|
Etichetta; il valore predefinito è |
header_compiler_builtin_processors
|
Elenco di stringhe; il valore predefinito è |
header_compiler_direct
|
Etichetta; il valore predefinito è Questo strumento non supporta l'elaborazione delle annotazioni. |
ijar
|
Etichetta; il valore predefinito è |
jacocorunner
|
Etichetta; il valore predefinito è |
java_runtime
|
Etichetta; il valore predefinito è |
javabuilder
|
Etichetta; il valore predefinito è |
javabuilder_data
|
Elenco di etichette; il valore predefinito è |
javabuilder_jvm_opts
|
Elenco di stringhe; il valore predefinito è |
javac_supports_multiplex_workers
|
Valore booleano; il valore predefinito è |
javac_supports_worker_cancellation
|
Valore booleano; il valore predefinito è |
javac_supports_worker_multiplex_sandboxing
|
Valore booleano; il valore predefinito è |
javac_supports_workers
|
Valore booleano; il valore predefinito è |
javacopts
|
Elenco di stringhe; il valore predefinito è |
jspecify_implicit_deps
|
Etichetta; il valore predefinito è |
jspecify_javacopts
|
Elenco di stringhe; il valore predefinito è |
jspecify_packages
|
Elenco di etichette; il valore predefinito è |
jspecify_processor
|
Etichetta; il valore predefinito è |
jspecify_processor_class
|
Stringa; il valore predefinito è |
jspecify_stubs
|
Elenco di etichette; il valore predefinito è |
jvm_opts
|
Elenco di stringhe; il valore predefinito è |
misc
|
Elenco di stringhe; il valore predefinito è |
oneversion
|
Etichetta; il valore predefinito è |
oneversion_allowlist_for_tests
|
Etichetta; il valore predefinito è |
oneversion_whitelist
|
Etichetta; il valore predefinito è |
package_configuration
|
Elenco di etichette; il valore predefinito è |
proguard_allowlister
|
Etichetta; il valore predefinito è |
reduced_classpath_incompatible_processors
|
Elenco di stringhe; il valore predefinito è |
singlejar
|
Etichetta; il valore predefinito è |
source_version
|
Stringa; il valore predefinito è |
target_version
|
Stringa; il valore predefinito è |
timezone_data
|
Etichetta; il valore predefinito è |
tools
|
Elenco di etichette; il valore predefinito è |
turbine_data
|
Elenco di etichette; il valore predefinito è |
turbine_jvm_opts
|
Elenco di stringhe; il valore predefinito è |
xlint
|
Elenco di stringhe; il valore predefinito è |