Reglas
- java_binary
- java_import
- java_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_single_jar
- java_toolchain
java_binary
Ver la fuente de la reglajava_binary(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, env, exec_compatible_with, exec_group_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, neverlink, output_licenses, package_metadata, plugins, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)
Compila un archivo Java (archivo .jar), además de un wrapper de secuencia de comandos de shell con el mismo nombre que la regla.
La secuencia de comandos de shell del wrapper usa una ruta de acceso de clase que incluye, entre otras cosas, un archivo .jar para cada biblioteca de la que depende el archivo binario. Cuando se ejecuta la secuencia de comandos de shell del wrapper, cualquier variable de entorno JAVABIN
no vacía tendrá prioridad sobre la versión especificada a través de la marca --java_runtime_version
de Bazel.
La secuencia de comandos de wrapper acepta varias marcas únicas. Consulta java_stub_template.txt
para obtener una lista de las marcas y las variables de entorno configurables que acepta el wrapper.
Objetivos de salida implícitos
name.jar
: Es un archivo Java que contiene los archivos de clase y otros recursos correspondientes a las dependencias directas del archivo binario.name-src.jar
: Es un archivo que contiene las fuentes ("source jar").name_deploy.jar
: Es un archivo Java apto para la implementación (solo se compila si se solicita explícitamente).Compilar el destino
<name>_deploy.jar
para tu regla crea un archivo .jar autónomo con un manifiesto que permite ejecutarlo con el comandojava -jar
o con la opción--singlejar
del script de wrapper. Se prefiere usar la secuencia de comandos de wrapper en lugar dejava -jar
porque también pasa las marcas de JVM y las opciones para cargar bibliotecas nativas.El JAR de implementación contiene todas las clases que encontraría un cargador de clases que buscara en la ruta de clase del script de wrapper del binario de principio a fin. También contiene las bibliotecas nativas necesarias para las dependencias. Se cargan automáticamente en la JVM durante el tiempo de ejecución.
Si tu destino especifica un atributo launcher, en lugar de ser un archivo JAR normal, el archivo _deploy.jar será un archivo binario nativo. Contendrá el lanzador y cualquier dependencia nativa (C++) de tu regla, todo vinculado en un objeto binario estático. Los bytes del archivo .jar real se agregarán a ese archivo binario nativo, lo que creará un solo BLOB binario que contendrá el código ejecutable y el código Java. Puedes ejecutar el archivo .jar resultante directamente, como lo harías con cualquier objeto binario nativo.
name_deploy-src.jar
: Es un archivo que contiene las fuentes recopiladas del cierre transitivo del destino. Coincidirán con las clases endeploy.jar
, excepto cuando los archivos .jar no tengan un archivo .jar de origen coincidente.
Se recomienda usar el nombre del archivo fuente que es el punto de entrada principal de la aplicación (sin la extensión). Por ejemplo, si tu punto de entrada se llama Main.java
, tu nombre podría ser Main
.
No se permite un atributo deps
en una regla java_binary
sin srcs
. Dicha regla requiere un main_class
proporcionado por runtime_deps
.
En el siguiente fragmento de código, se ilustra un error común:
java_binary(
name = "DontDoThis",
srcs = [
...,
"GeneratedJavaFile.java"
, # a generated .java file
],
deps = [":generating_rule",
], # rule that generates that file
)
En su lugar, haz lo siguiente:
java_binary(
name = "DoThisInstead",
srcs = [
...,
":generating_rule",
],
)
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es deps en Atributos típicos definidos por la mayoría de las reglas de compilación.
|
srcs
|
Lista de etiquetas. El valor predeterminado es
Se compilan los archivos fuente de tipo
Los archivos fuente de tipo
Reglas: Si la regla (por lo general,
Este argumento casi siempre es obligatorio, excepto si un atributo |
data
|
Lista de etiquetas. El valor predeterminado es data en Atributos típicos definidos por la mayoría de las reglas de compilación.
|
resources
|
Lista de etiquetas. El valor predeterminado es Los recursos pueden ser archivos fuente o archivos generados.
Si se especifican recursos, se incluirán en el archivo .jar junto con los archivos |
add_exports
|
Lista de cadenas; el valor predeterminado es module o package proporcionado.
Esto corresponde a las marcas javac y JVM --add-exports=. |
add_opens
|
Lista de cadenas; el valor predeterminado es module o package determinado.
Esto corresponde a las marcas javac y JVM --add-opens=. |
bootclasspath
|
Etiqueta: El valor predeterminado es |
classpath_resources
|
Lista de etiquetas. El valor predeterminado es
Es una lista de recursos que deben ubicarse en la raíz del árbol de Java. El único propósito de este atributo es admitir bibliotecas de terceros que requieren que sus recursos se encuentren en la ruta de clase exactamente como |
create_executable
|
Booleano; el valor predeterminado es java_single_jar en su lugar.
|
deploy_env
|
Lista de etiquetas. El valor predeterminado es java_binary que representan el entorno de implementación de este archivo binario.
Establece este atributo cuando compiles un complemento que se cargará con otro java_binary .Si se configura este atributo, se excluyen todas las dependencias de la ruta de acceso de clase del tiempo de ejecución (y el archivo JAR de implementación) de este binario que se comparten entre este binario y los destinos especificados en deploy_env .
|
deploy_manifest_lines
|
Lista de cadenas; el valor predeterminado es META-INF/manifest.mf generado para el destino *_deploy.jar . El contenido de este atributo no está sujeto a la sustitución de "Crear variable".
|
javacopts
|
Lista de cadenas; el valor predeterminado es Estas opciones del compilador se pasan a javac después de las opciones globales del compilador. |
jvm_flags
|
Lista de cadenas; el valor predeterminado es La secuencia de comandos de wrapper para un archivo binario de Java incluye una definición de CLASSPATH (para encontrar todos los archivos JAR dependientes) y llama al intérprete de Java correcto.
La línea de comandos que genera el wrapper incluye el nombre de la clase principal seguido de un Ten en cuenta que este atributo no tiene efecto en los resultados de |
launcher
|
Etiqueta: El valor predeterminado es bin/java normal incluido en el JDK.
El destino debe ser un cc_binary . Se puede especificar cualquier cc_binary que implemente la
API de invocación de Java como valor para este atributo.
De forma predeterminada, Bazel usará el selector de JDK normal (bin/java o java.exe). La marca de Bazel Ten en cuenta que tus dependencias nativas (C++, SWIG, JNI) se compilarán de manera diferente según si usas el iniciador del JDK o algún otro:
Cuando se usa un selector que no sea el selector de JDK predeterminado, cambia el formato de la salida de |
main_class
|
Cadena. El valor predeterminado es main() que se usará como punto de entrada.
Si una regla usa esta opción, no necesita una lista de srcs=[...] .
Por lo tanto, con este atributo, se puede crear un ejecutable a partir de una biblioteca de Java que ya contiene uno o más métodos main() .
El valor de este atributo es un nombre de clase, no un archivo fuente. La clase debe estar disponible en el tiempo de ejecución: esta regla puede compilarla (desde |
neverlink
|
Booleano; el valor predeterminado es |
plugins
|
Lista de etiquetas. El valor predeterminado es java_plugin especificado en este atributo se ejecutará cada vez que se compile esta regla. Una biblioteca también puede heredar complementos de dependencias que usan exported_plugins . Los recursos que genera el complemento se incluirán en el archivo .jar resultante de esta regla.
|
resource_strip_prefix
|
Cadena. El valor predeterminado es
Si se especifica, este prefijo de ruta de acceso se quita de cada archivo del atributo |
runtime_deps
|
Lista de etiquetas. El valor predeterminado es deps comunes, estos aparecerán en la ruta de clase de tiempo de ejecución, pero, a diferencia de ellos, no en la ruta de clase de tiempo de compilación. Aquí se deben enumerar las dependencias que solo se necesitan en el tiempo de ejecución. Las herramientas de análisis de dependencias deben ignorar los destinos que aparecen en runtime_deps y deps .
|
stamp
|
Número entero; el valor predeterminado es
Los archivos binarios con marca de tiempo no se vuelven a compilar, a menos que cambien sus dependencias. |
use_launcher
|
Booleano; el valor predeterminado es Si este atributo se establece en falso, se ignorarán el atributo launcher y la marca |
use_testrunner
|
Booleano; el valor predeterminado es com.google.testing.junit.runner.BazelTestRunner ) como el punto de entrada principal para un programa en Java y proporciona la clase de prueba al ejecutor de pruebas como un valor de la propiedad del sistema bazel.test_suite .
Puedes usar esto para anular el comportamiento predeterminado, que es usar el ejecutor de pruebas para las reglas java_test y no usarlo para las reglas java_binary . Es poco probable que quieras hacer esto. Un uso es para las reglas de AllTest que invoca otra regla (para configurar una base de datos antes de ejecutar las pruebas, por ejemplo). La regla AllTest se debe declarar como java_binary , pero debe seguir usando el ejecutor de pruebas como su punto de entrada principal.
El nombre de una clase de ejecutor de pruebas se puede anular con el atributo main_class .
|
java_import
Ver la fuente de la reglajava_import(name, deps, data, add_exports, add_opens, compatible_with, constraints, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, package_metadata, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, toolchains, visibility)
Esta regla permite el uso de archivos .jar
precompilados como bibliotecas para las reglas java_library
y java_binary
.
Ejemplos
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",
],
)
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es |
data
|
Lista de etiquetas. El valor predeterminado es |
add_exports
|
Lista de cadenas; el valor predeterminado es module o package proporcionado.
Esto corresponde a las marcas javac y JVM --add-exports=. |
add_opens
|
Lista de cadenas; el valor predeterminado es module o package determinado.
Esto corresponde a las marcas javac y JVM --add-opens=. |
constraints
|
Lista de cadenas; el valor predeterminado es |
exports
|
Lista de etiquetas. El valor predeterminado es |
jars
|
Lista de etiquetas; obligatorio Es la lista de archivos JAR proporcionados a los destinos de Java que dependen de este destino. |
neverlink
|
Booleano; el valor predeterminado es tools.jar para cualquier elemento que se ejecute en un JDK estándar.
|
proguard_specs
|
Lista de etiquetas. El valor predeterminado es android_binary que dependa de esta biblioteca.
Los archivos incluidos aquí solo deben tener reglas idempotentes, es decir, -dontnote, -dontwarn, assumenosideeffects y reglas que comiencen con -keep. Otras opciones solo pueden aparecer en los proguard_specs de android_binary para garantizar combinaciones no tautológicas.
|
runtime_deps
|
Lista de etiquetas. El valor predeterminado es |
srcjar
|
Etiqueta: El valor predeterminado es |
java_library
Ver la fuente de la reglajava_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, package_metadata, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)
Esta regla compila y vincula fuentes en un archivo .jar
.
Salidas implícitas
libname.jar
: Es un archivo Java que contiene los archivos de clase.libname-src.jar
: Es un archivo que contiene las fuentes ("source jar").
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es deps en Atributos típicos definidos por la mayoría de las reglas de compilación.
Los archivos .jar compilados por las reglas de
Por el contrario, los destinos del atributo |
srcs
|
Lista de etiquetas. El valor predeterminado es
Se compilan los archivos fuente de tipo
Los archivos fuente de tipo
Reglas: Si la regla (por lo general,
Los archivos fuente de tipo Se ignorarán todos los demás archivos, siempre y cuando haya al menos uno de un tipo de archivo descrito anteriormente. De lo contrario, se generará un error.
Este argumento casi siempre es obligatorio, excepto si especificas el argumento |
data
|
Lista de etiquetas. El valor predeterminado es data en Atributos típicos definidos por la mayoría de las reglas de compilación.
Cuando se compila un |
resources
|
Lista de etiquetas. El valor predeterminado es Los recursos pueden ser archivos fuente o archivos generados.
Si se especifican recursos, se incluirán en el archivo .jar junto con los archivos |
add_exports
|
Lista de cadenas; el valor predeterminado es module o package proporcionado.
Esto corresponde a las marcas javac y JVM --add-exports=. |
add_opens
|
Lista de cadenas; el valor predeterminado es module o package determinado.
Esto corresponde a las marcas javac y JVM --add-opens=. |
bootclasspath
|
Etiqueta: El valor predeterminado es |
exported_plugins
|
Lista de etiquetas. El valor predeterminado es java_plugin s (p.ej., procesadores de anotaciones) que se exportarán a las bibliotecas que dependen directamente de esta biblioteca.
La lista especificada de |
exports
|
Lista de etiquetas. El valor predeterminado es
Si se enumeran reglas aquí, estarán disponibles para las reglas principales, como si las reglas principales dependieran explícitamente de estas reglas. Esto no es cierto para los
Resumen: Una regla X puede acceder al código en Y si existe una ruta de dependencia entre ellas que comienza con una arista
Supongamos que A depende de B y B depende de C. En este caso, C es una dependencia transitiva de A, por lo que cambiar las fuentes de C y volver a compilar A volverá a compilar todo correctamente. Sin embargo, A no podrá usar clases en C. Para permitirlo, A debe declarar C en su El cierre de las bibliotecas exportadas está disponible para todas las reglas principales directas. Veamos un ejemplo un poco diferente: A depende de B, B depende de C y D, y también exporta C, pero no D. Ahora A tiene acceso a C, pero no a D. Ahora, si C y D exportaran algunas bibliotecas, C' y D' respectivamente, A solo podría acceder a C', pero no a D'.
Importante: Una regla exportada no es una dependencia normal. Si seguimos con el ejemplo anterior, si B exporta C y también quiere usar C, también debe incluirlo en su propio |
javabuilder_jvm_flags
|
Lista de cadenas; el valor predeterminado es |
javacopts
|
Lista de cadenas; el valor predeterminado es Estas opciones del compilador se pasan a javac después de las opciones globales del compilador. |
neverlink
|
Booleano; el valor predeterminado es tools.jar para cualquier elemento que se ejecute en un JDK estándar.
Ten en cuenta que Si la biblioteca de tiempo de ejecución difiere de la biblioteca de compilación, debes asegurarte de que solo difiera en los lugares en los que el JLS prohíbe a los compiladores insertar código en línea (y eso debe cumplirse para todas las versiones futuras del JLS). |
plugins
|
Lista de etiquetas. El valor predeterminado es java_plugin especificado en este atributo se ejecutará cada vez que se compile esta regla. Una biblioteca también puede heredar complementos de dependencias que usan exported_plugins . Los recursos que genera el complemento se incluirán en el archivo .jar resultante de esta regla.
|
proguard_specs
|
Lista de etiquetas. El valor predeterminado es android_binary que dependa de esta biblioteca.
Los archivos incluidos aquí solo deben tener reglas idempotentes, es decir, -dontnote, -dontwarn, assumenosideeffects y reglas que comiencen con -keep. Otras opciones solo pueden aparecer en los proguard_specs de android_binary para garantizar combinaciones no tautológicas.
|
resource_strip_prefix
|
Cadena. El valor predeterminado es
Si se especifica, este prefijo de ruta de acceso se quita de cada archivo del atributo |
runtime_deps
|
Lista de etiquetas. El valor predeterminado es deps comunes, estos aparecerán en la ruta de clase de tiempo de ejecución, pero, a diferencia de ellos, no en la ruta de clase de tiempo de compilación. Aquí se deben enumerar las dependencias que solo se necesitan en el tiempo de ejecución. Las herramientas de análisis de dependencias deben ignorar los destinos que aparecen en runtime_deps y deps .
|
java_test
Ver la fuente de la reglajava_test(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, neverlink, package_metadata, plugins, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, use_testrunner, visibility)
Una regla java_test()
compila una prueba de Java. Una prueba es un wrapper binario alrededor de tu código de prueba. Se invoca el método principal del ejecutor de pruebas en lugar de compilar la clase principal.
Objetivos de salida implícitos
name.jar
: Es un archivo Java.name_deploy.jar
: Es un archivo de Java apto para la implementación. (Solo se compila si se solicita de forma explícita). Consulta la descripción del resultadoname_deploy.jar
de java_binary para obtener más detalles.
Consulta la sección sobre los argumentos de java_binary()
. Esta regla también admite todos los atributos comunes a todas las reglas de prueba (*_test).
Ejemplos
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",
],
)
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es deps en Atributos típicos definidos por la mayoría de las reglas de compilación.
|
srcs
|
Lista de etiquetas. El valor predeterminado es
Se compilan los archivos fuente de tipo
Los archivos fuente de tipo
Reglas: Si la regla (por lo general,
Este argumento casi siempre es obligatorio, excepto si un atributo |
data
|
Lista de etiquetas. El valor predeterminado es data en Atributos típicos definidos por la mayoría de las reglas de compilación.
|
resources
|
Lista de etiquetas. El valor predeterminado es Los recursos pueden ser archivos fuente o archivos generados.
Si se especifican recursos, se incluirán en el archivo .jar junto con los archivos |
add_exports
|
Lista de cadenas; el valor predeterminado es module o package proporcionado.
Esto corresponde a las marcas javac y JVM --add-exports=. |
add_opens
|
Lista de cadenas; el valor predeterminado es module o package determinado.
Esto corresponde a las marcas javac y JVM --add-opens=. |
bootclasspath
|
Etiqueta: El valor predeterminado es |
classpath_resources
|
Lista de etiquetas. El valor predeterminado es
Es una lista de recursos que deben ubicarse en la raíz del árbol de Java. El único propósito de este atributo es admitir bibliotecas de terceros que requieren que sus recursos se encuentren en la ruta de clase exactamente como |
create_executable
|
Booleano; el valor predeterminado es java_single_jar en su lugar.
|
deploy_manifest_lines
|
Lista de cadenas; el valor predeterminado es META-INF/manifest.mf generado para el destino *_deploy.jar . El contenido de este atributo no está sujeto a la sustitución de "Crear variable".
|
javacopts
|
Lista de cadenas; el valor predeterminado es Estas opciones del compilador se pasan a javac después de las opciones globales del compilador. |
jvm_flags
|
Lista de cadenas; el valor predeterminado es La secuencia de comandos de wrapper para un archivo binario de Java incluye una definición de CLASSPATH (para encontrar todos los archivos JAR dependientes) y llama al intérprete de Java correcto.
La línea de comandos que genera el wrapper incluye el nombre de la clase principal seguido de un Ten en cuenta que este atributo no tiene efecto en los resultados de |
launcher
|
Etiqueta: El valor predeterminado es bin/java normal incluido en el JDK.
El destino debe ser un cc_binary . Se puede especificar cualquier cc_binary que implemente la
API de invocación de Java como valor para este atributo.
De forma predeterminada, Bazel usará el selector de JDK normal (bin/java o java.exe). La marca de Bazel Ten en cuenta que tus dependencias nativas (C++, SWIG, JNI) se compilarán de manera diferente según si usas el iniciador del JDK o algún otro:
Cuando se usa un selector que no sea el selector de JDK predeterminado, cambia el formato de la salida de |
main_class
|
Cadena. El valor predeterminado es main() que se usará como punto de entrada.
Si una regla usa esta opción, no necesita una lista de srcs=[...] .
Por lo tanto, con este atributo, se puede crear un ejecutable a partir de una biblioteca de Java que ya contiene uno o más métodos main() .
El valor de este atributo es un nombre de clase, no un archivo fuente. La clase debe estar disponible en el tiempo de ejecución: esta regla puede compilarla (desde |
neverlink
|
Booleano; el valor predeterminado es |
plugins
|
Lista de etiquetas. El valor predeterminado es java_plugin especificado en este atributo se ejecutará cada vez que se compile esta regla. Una biblioteca también puede heredar complementos de dependencias que usan exported_plugins . Los recursos que genera el complemento se incluirán en el archivo .jar resultante de esta regla.
|
resource_strip_prefix
|
Cadena. El valor predeterminado es
Si se especifica, este prefijo de ruta de acceso se quita de cada archivo del atributo |
runtime_deps
|
Lista de etiquetas. El valor predeterminado es deps comunes, estos aparecerán en la ruta de clase de tiempo de ejecución, pero, a diferencia de ellos, no en la ruta de clase de tiempo de compilación. Aquí se deben enumerar las dependencias que solo se necesitan en el tiempo de ejecución. Las herramientas de análisis de dependencias deben ignorar los destinos que aparecen en runtime_deps y deps .
|
stamp
|
Número entero; el valor predeterminado es
Los archivos binarios con marca de tiempo no se vuelven a compilar, a menos que cambien sus dependencias. |
test_class
|
Cadena. El valor predeterminado es
De forma predeterminada, si no se define este argumento, se usa el modo heredado y, en su lugar, se usan los argumentos de prueba. Establece la marca
Este atributo especifica el nombre de una clase Java que ejecutará esta prueba. Es raro que debas configurar este parámetro. Si se omite este argumento, se inferirá con el
En JUnit3, la clase de prueba debe ser una subclase de
Este atributo permite que varias reglas |
use_launcher
|
Booleano; el valor predeterminado es Si este atributo se establece en falso, se ignorarán el atributo launcher y la marca |
use_testrunner
|
Booleano; el valor predeterminado es com.google.testing.junit.runner.BazelTestRunner ) como el punto de entrada principal para un programa en Java y proporciona la clase de prueba al ejecutor de pruebas como un valor de la propiedad del sistema bazel.test_suite .
Puedes usar esto para anular el comportamiento predeterminado, que es usar el ejecutor de pruebas para las reglas java_test y no usarlo para las reglas java_binary . Es poco probable que quieras hacer esto. Un uso es para las reglas de AllTest que invoca otra regla (para configurar una base de datos antes de ejecutar las pruebas, por ejemplo). La regla AllTest se debe declarar como java_binary , pero debe seguir usando el ejecutor de pruebas como su punto de entrada principal.
El nombre de una clase de ejecutor de pruebas se puede anular con el atributo main_class .
|
java_package_configuration
Ver la fuente de la reglajava_package_configuration(name, data, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, javacopts, output_licenses, package_metadata, packages, restricted_to, system, tags, target_compatible_with, testonly, toolchains, visibility)
Es la configuración que se aplicará a un conjunto de paquetes.
Se pueden agregar configuraciones a los java_toolchain.javacopts
.
Ejemplo:
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",
]
)
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Es un nombre único para este destino. |
data
|
Lista de etiquetas. El valor predeterminado es |
javacopts
|
Lista de cadenas; el valor predeterminado es |
output_licenses
|
Lista de cadenas; el valor predeterminado es |
packages
|
Lista de etiquetas. El valor predeterminado es package_group s al que se debe aplicar la configuración.
|
system
|
Etiqueta: El valor predeterminado es |
java_plugin
Ver la fuente de la reglajava_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, package_metadata, plugins, processor_class, proguard_specs, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_plugin
define complementos para el compilador de Java que ejecuta Bazel. El único tipo de complementos admitido son los procesadores de anotaciones. Una regla java_library
o java_binary
puede ejecutar complementos si depende de ellos a través del atributo plugins
. Un java_library
también puede exportar automáticamente complementos a bibliotecas que dependen directamente de él con exported_plugins
.
Objetivos de salida implícitos
libname.jar
: Es un archivo Java.
Los argumentos son un subconjunto de los de java_library() (y tienen la misma semántica), excepto por la adición de los argumentos processor_class
y generates_api
.
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es deps en Atributos típicos definidos por la mayoría de las reglas de compilación.
Los archivos .jar compilados por las reglas de
Por el contrario, los destinos del atributo |
srcs
|
Lista de etiquetas. El valor predeterminado es
Se compilan los archivos fuente de tipo
Los archivos fuente de tipo
Reglas: Si la regla (por lo general,
Los archivos fuente de tipo Se ignorarán todos los demás archivos, siempre y cuando haya al menos uno de un tipo de archivo descrito anteriormente. De lo contrario, se generará un error.
Este argumento casi siempre es obligatorio, excepto si especificas el argumento |
data
|
Lista de etiquetas. El valor predeterminado es data en Atributos típicos definidos por la mayoría de las reglas de compilación.
Cuando se compila un |
resources
|
Lista de etiquetas. El valor predeterminado es Los recursos pueden ser archivos fuente o archivos generados.
Si se especifican recursos, se incluirán en el archivo .jar junto con los archivos |
add_exports
|
Lista de cadenas; el valor predeterminado es module o package proporcionado.
Esto corresponde a las marcas javac y JVM --add-exports=. |
add_opens
|
Lista de cadenas; el valor predeterminado es module o package determinado.
Esto corresponde a las marcas javac y JVM --add-opens=. |
bootclasspath
|
Etiqueta: El valor predeterminado es |
generates_api
|
Booleano; el valor predeterminado es Si una regla usa un procesador de anotaciones que genera APIs, otras reglas que dependen de ella solo pueden hacer referencia al código generado si sus acciones de compilación se programan después de la regla de generación. Este atributo indica a Bazel que introduzca restricciones de programación cuando se habilita --java_header_compilation. ADVERTENCIA: Este atributo afecta el rendimiento de la compilación. Úsalo solo si es necesario. |
javabuilder_jvm_flags
|
Lista de cadenas; el valor predeterminado es |
javacopts
|
Lista de cadenas; el valor predeterminado es Estas opciones del compilador se pasan a javac después de las opciones globales del compilador. |
neverlink
|
Booleano; el valor predeterminado es tools.jar para cualquier elemento que se ejecute en un JDK estándar.
Ten en cuenta que Si la biblioteca de tiempo de ejecución difiere de la biblioteca de compilación, debes asegurarte de que solo difiera en los lugares en los que el JLS prohíbe a los compiladores insertar código en línea (y eso debe cumplirse para todas las versiones futuras del JLS). |
output_licenses
|
Lista de cadenas; el valor predeterminado es |
plugins
|
Lista de etiquetas. El valor predeterminado es java_plugin especificado en este atributo se ejecutará cada vez que se compile esta regla. Una biblioteca también puede heredar complementos de dependencias que usan exported_plugins . Los recursos que genera el complemento se incluirán en el archivo .jar resultante de esta regla.
|
processor_class
|
Cadena. El valor predeterminado es |
proguard_specs
|
Lista de etiquetas. El valor predeterminado es android_binary que dependa de esta biblioteca.
Los archivos incluidos aquí solo deben tener reglas idempotentes, es decir, -dontnote, -dontwarn, assumenosideeffects y reglas que comiencen con -keep. Otras opciones solo pueden aparecer en los proguard_specs de android_binary para garantizar combinaciones no tautológicas.
|
resource_strip_prefix
|
Cadena. El valor predeterminado es
Si se especifica, este prefijo de ruta de acceso se quita de cada archivo del atributo |
java_runtime
Ver la fuente de la reglajava_runtime(name, srcs, compatible_with, default_cds, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, version, visibility)
Especifica la configuración de un entorno de ejecución de Java.
Ejemplo:
java_runtime(
name = "jdk-9-ea+153",
srcs = glob(["jdk9-ea+153/**"]),
java_home = "jdk9-ea+153",
)
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Es un nombre único para este destino. |
srcs
|
Lista de etiquetas. El valor predeterminado es |
default_cds
|
Etiqueta: El valor predeterminado es java_runtime hermético. Cuando se habilita el modo hermético para un destino java_binary , el CDS predeterminado java_runtime se empaqueta en el JAR de implementación hermético.
|
hermetic_srcs
|
Lista de etiquetas. El valor predeterminado es |
hermetic_static_libs
|
Lista de etiquetas. El valor predeterminado es |
java
|
Etiqueta: El valor predeterminado es |
java_home
|
Cadena. El valor predeterminado es srcs y java deben estar vacíos.
|
lib_ct_sym
|
Etiqueta: El valor predeterminado es --release . Si no se especifica y hay exactamente un archivo en srcs cuya ruta de acceso termina en /lib/ct.sym , se usa ese archivo.
|
lib_modules
|
Etiqueta: El valor predeterminado es |
output_licenses
|
Lista de cadenas; el valor predeterminado es |
version
|
Número entero; el valor predeterminado es Runtime.version().feature() .
|
java_single_jar
Ver la fuente de la reglajava_single_jar(name, deps, compatible_with, compress, deploy_env, deploy_manifest_lines, deprecation, exclude_build_data, exec_compatible_with, exec_group_compatible_with, exec_properties, features, multi_release, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Es un nombre único para este destino. |
deps
|
Lista de etiquetas. El valor predeterminado es |
compress
|
Cadena. El valor predeterminado es |
deploy_env
|
Lista de etiquetas. El valor predeterminado es |
deploy_manifest_lines
|
Lista de cadenas; el valor predeterminado es META-INF/manifest.mf .
|
exclude_build_data
|
Booleano; el valor predeterminado es |
multi_release
|
Booleano; el valor predeterminado es |
java_toolchain
Ver la fuente de la reglajava_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_javacopts, compatible_with, deprecation, deps_checker, exec_compatible_with, exec_group_compatible_with, exec_properties, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_builtin_processors, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_worker_cancellation, javac_supports_worker_multiplex_sandboxing, javac_supports_workers, javacopts, jspecify_implicit_deps, jspecify_javacopts, jspecify_packages, jspecify_processor, jspecify_processor_class, jspecify_stubs, jvm_opts, licenses, misc, oneversion, oneversion_allowlist, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, package_metadata, proguard_allowlister, reduced_classpath_incompatible_processors, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, toolchains, tools, turbine_data, turbine_jvm_opts, visibility, xlint)
Especifica la configuración del compilador de Java. La cadena de herramientas que se usará se puede cambiar con el argumento --java_toolchain. Por lo general, no deberías escribir ese tipo de reglas, a menos que quieras ajustar tu compilador de Java.
Ejemplos
Un ejemplo simple sería el siguiente:
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",
)
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Es un nombre único para este destino. |
android_lint_data
|
Lista de etiquetas. El valor predeterminado es |
android_lint_jvm_opts
|
Lista de cadenas; el valor predeterminado es |
android_lint_opts
|
Lista de cadenas; el valor predeterminado es |
android_lint_package_configuration
|
Lista de etiquetas. El valor predeterminado es |
android_lint_runner
|
Etiqueta: El valor predeterminado es |
bootclasspath
|
Lista de etiquetas. El valor predeterminado es |
compatible_javacopts
|
Es nulo. El valor predeterminado es |
deps_checker
|
Etiqueta: El valor predeterminado es |
forcibly_disable_header_compilation
|
Booleano; el valor predeterminado es |
genclass
|
Etiqueta: El valor predeterminado es |
header_compiler
|
Etiqueta: El valor predeterminado es |
header_compiler_builtin_processors
|
Lista de cadenas; el valor predeterminado es |
header_compiler_direct
|
Etiqueta: El valor predeterminado es Esta herramienta no admite el procesamiento de anotaciones. |
ijar
|
Etiqueta: El valor predeterminado es |
jacocorunner
|
Etiqueta: El valor predeterminado es |
java_runtime
|
Etiqueta: El valor predeterminado es |
javabuilder
|
Etiqueta: El valor predeterminado es |
javabuilder_data
|
Lista de etiquetas. El valor predeterminado es |
javabuilder_jvm_opts
|
Lista de cadenas; el valor predeterminado es |
javac_supports_multiplex_workers
|
Booleano; el valor predeterminado es |
javac_supports_worker_cancellation
|
Booleano; el valor predeterminado es |
javac_supports_worker_multiplex_sandboxing
|
Booleano; el valor predeterminado es |
javac_supports_workers
|
Booleano; el valor predeterminado es |
javacopts
|
Lista de cadenas; el valor predeterminado es |
jspecify_implicit_deps
|
Etiqueta: El valor predeterminado es |
jspecify_javacopts
|
Lista de cadenas; el valor predeterminado es |
jspecify_packages
|
Lista de etiquetas. El valor predeterminado es |
jspecify_processor
|
Etiqueta: El valor predeterminado es |
jspecify_processor_class
|
Cadena. El valor predeterminado es |
jspecify_stubs
|
Lista de etiquetas. El valor predeterminado es |
jvm_opts
|
Lista de cadenas; el valor predeterminado es |
misc
|
Lista de cadenas; el valor predeterminado es |
oneversion
|
Etiqueta: El valor predeterminado es |
oneversion_allowlist
|
Etiqueta: El valor predeterminado es |
oneversion_allowlist_for_tests
|
Etiqueta: El valor predeterminado es |
oneversion_whitelist
|
Etiqueta: El valor predeterminado es |
package_configuration
|
Lista de etiquetas. El valor predeterminado es |
proguard_allowlister
|
Etiqueta: El valor predeterminado es |
reduced_classpath_incompatible_processors
|
Lista de cadenas; el valor predeterminado es |
singlejar
|
Etiqueta: El valor predeterminado es |
source_version
|
Cadena. El valor predeterminado es |
target_version
|
Cadena. El valor predeterminado es |
timezone_data
|
Etiqueta: El valor predeterminado es |
tools
|
Lista de etiquetas. El valor predeterminado es |
turbine_data
|
Lista de etiquetas. El valor predeterminado es |
turbine_jvm_opts
|
Lista de cadenas; el valor predeterminado es |
xlint
|
Lista de cadenas; el valor predeterminado es |