Reglas
- 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
Ver el origen de la reglajava_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)
Compila un archivo Java (“archivo jar”), más una secuencia de comandos de shell wrapper con el mismo nombre que la regla.
La secuencia de comandos de shell del wrapper usa una ruta de clase que incluye, entre otros elementos, un archivo JAR para cada biblioteca de la que depende el objeto binario. Cuando ejecutes la secuencia de comandos de shell del wrapper, cualquier variable de entorno
JAVABIN
que no esté vacía tendrá prioridad sobre la versión especificada a través
de la marca --java_runtime_version
de Bazel.
La secuencia de comandos del wrapper acepta varias marcas únicas. Consulta //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
para obtener una lista de marcas configurables y variables de entorno que acepta el wrapper.
Objetivos de salida implícitos
name.jar
: Es un archivo de Java que contiene los archivos de clase y otros recursos correspondientes a las dependencias directas del objeto binario.name-src.jar
: Es un archivo que contiene las fuentes ("jar de origen").name_deploy.jar
: Es un archivo Java adecuado para la implementación (solo se compila si se solicita de forma explícita).Si compilas el destino
<name>_deploy.jar
para tu regla, se creará un archivo jar independiente con un manifiesto que permita ejecutarlo con el comandojava -jar
o con la opción--singlejar
de la secuencia de comandos del wrapper. Se prefiere el uso de la secuencia de comandos del wrapper en lugar dejava -jar
, ya que también pasa las marcas de JVM y las opciones para cargar bibliotecas nativas.El archivo jar de implementación contiene todas las clases que encontraría un cargador de clases que buscara la ruta de clase desde la secuencia de comandos del wrapper del objeto binario de principio a fin. Además, contiene las bibliotecas nativas necesarias para las dependencias. Estos se cargan automáticamente en la JVM durante el tiempo de ejecución.
Si el destino especifica un atributo de launcher, en lugar de ser un archivo JAR normal, _deploy.jar será un objeto binario nativo. Este contendrá el selector y cualquier dependencia (C++) nativa de tu regla, todo vinculado a un objeto binario estático. Los bytes del archivo jar real se agregarán a ese objeto binario nativo y se creará un solo BLOB binario que contiene el código ejecutable y el 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. Estos coincidirán con las clases dedeploy.jar
, excepto cuando los archivos jar no tengan un jar de origen que coincida.
No se permite un atributo deps
en una regla java_binary
sin srcs
. Esa regla requiere una main_class
proporcionada por runtime_deps
.
En el siguiente fragmento de código, se muestra un error común:
java_binary( name = "DontDoThis", srcs = [ ..., "GeneratedJavaFile.java", # a generated .java file ], deps = [":generating_rule"], # rule that generates that file )
Haz lo siguiente:
java_binary( name = "DoThisInstead", srcs = [ ..., ":generating_rule", ], )
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Un nombre único para este destino. Se recomienda usar el nombre del archivo fuente que constituye el punto de entrada principal de la aplicación (menos la extensión). Por ejemplo, si tu punto de entrada se llama Main.java , tu nombre podría ser Main .
|
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 de origen de tipo
Los archivos de origen de tipo
Reglas: Si la regla (por lo general,
Casi siempre se requiere este argumento, excepto si un atributo |
resources
|
Lista de etiquetas; el valor predeterminado es
Si se especifican los recursos, se agruparán en el jar junto con los archivos Los recursos pueden ser archivos de origen o generados. |
classpath_resources
|
Lista de etiquetas; el valor predeterminado es
Una lista de recursos que deben estar ubicados en la raíz del árbol de Java. El único propósito de este atributo es admitir bibliotecas de terceros que requieran que sus recursos se encuentren en la ruta de clase exactamente como |
create_executable
|
Booleano; no configurable; 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 para este objeto binario.
Establece este atributo cuando compiles un complemento que cargará otro java_binary .Cuando se configura este atributo, se excluyen todas las dependencias de la ruta de clase del entorno de ejecución (y el jar de implementación) de este objeto binario que se comparten entre este objeto 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 "Make variable".
|
javacopts
|
Lista de cadenas; el valor predeterminado es Estas opciones del compilador se pasan a javac después de las opciones del compilador global. |
jvm_flags
|
Lista de cadenas; el valor predeterminado es La secuencia de comandos del wrapper para un objeto binario de Java incluye una definición de CLASSPATH (para encontrar todos los archivos jar dependientes) y también invoca el intérprete de Java correcto.
La línea de comandos que genera la secuencia de comandos del wrapper incluye el nombre de la clase principal seguido de Ten en cuenta que este atributo no tiene efecto en los resultados de |
launcher
|
Etiqueta; el valor predeterminado es bin/java normal que se incluye con el JDK.
El destino debe ser un cc_binary . Cualquier cc_binary que implemente la
API de invocación de Java se puede especificar como un valor para este atributo.
De forma predeterminada, Bazel usará el launcher 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 selector de JDK o algún otro selector:
Cuando se usa cualquier selector que no sea el selector predeterminado de JDK, cambia el formato de salida de |
main_class
|
Cadena; el valor predeterminado es main() para 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 hacer que un archivo se pueda ejecutar desde una biblioteca Java que ya contiene uno o más métodos main() .
El valor de este atributo es un nombre de clase, no un archivo de origen. La clase debe estar disponible durante el tiempo de ejecución: se la puede compilar mediante esta regla (desde |
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
generados por el complemento se incluirán en el archivo jar resultante de esta regla.
|
resource_jars
|
Lista de etiquetas; el valor predeterminado es |
resource_strip_prefix
|
Cadena; el valor predeterminado es
Si se especifica, este prefijo de ruta de acceso se quita de todos los archivos en el 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 indicar las dependencias que solo se necesitan en el entorno de ejecución. Las herramientas de análisis de dependencias deben ignorar los objetivos que aparecen tanto en runtime_deps como en deps .
|
stamp
|
Número entero; el valor predeterminado es
Los objetos binarios sellados no se vuelven a compilar, a menos que cambien sus dependencias. |
use_launcher
|
Booleano; el valor predeterminado es Si se establece este atributo como falso, se ignorarán el atributo launcher y la marca |
use_testrunner
|
Booleano; el valor predeterminado es com.google.testing.junit.runner.BazelTestRunner de forma predeterminada) como punto de entrada principal para un programa de Java y proporciona la clase de prueba al ejecutor de pruebas como un valor de propiedad del sistema bazel.test_suite .
Puedes usar esto para anular el comportamiento predeterminado, que consiste en usar el ejecutor de pruebas para las reglas java_test , en lugar de usarlo para las reglas java_binary . Es poco probable que quieras hacerlo. Un uso es para las reglas de AllTest
que invoca otra regla (por ejemplo, para configurar una base de datos
antes de ejecutar las pruebas). Se debe declarar la regla AllTest como java_binary , pero se debe usar el ejecutor de pruebas como punto de entrada principal.
El nombre de una clase del ejecutor de pruebas se puede anular con el atributo main_class .
|
java_import
Ver el origen de la reglajava_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)
Esta regla permite el uso de archivos .jar
ya compilados 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) 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 la package determinada.
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 (obligatoria) Es la lista de archivos JAR que se proporciona 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 según esta biblioteca.
Los archivos incluidos aquí solo deben tener reglas idempotentes, como -dontnote, -dontwarn, assumenosideeffects y reglas que comiencen con -keep. Otras opciones solo pueden aparecer en 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 el origen de la reglajava_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)
Esta regla compila y vincula fuentes en un archivo .jar
.
Resultados implícitos
libname.jar
: Es un archivo de Java que contiene los archivos de la clase.libname-src.jar
: Es un archivo que contiene las fuentes ("jar de origen").
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) 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
Por el contrario, los objetivos del atributo |
srcs
|
Lista de etiquetas; el valor predeterminado es
Se compilan los archivos de origen de tipo
Los archivos de origen de tipo
Reglas: Si la regla (por lo general,
Los archivos de origen de tipo Se ignorarán todos los demás archivos, siempre que haya al menos un archivo de uno de los tipos de archivo descritos anteriormente. De lo contrario, se genera 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 compilas un |
resources
|
Lista de etiquetas; el valor predeterminado es Los recursos pueden ser archivos de origen o generados.
Si se especifican los recursos, se agruparán en el jar junto con los archivos |
add_exports
|
Lista de cadenas; el valor predeterminado es module o la package determinada.
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 (p.ej., procesadores de anotaciones) para exportar a las bibliotecas que dependen directamente de esta biblioteca.
La lista especificada de |
exports
|
Lista de etiquetas; el valor predeterminado es
Si enumeras las reglas aquí, estarán disponibles para las reglas superiores, como si estas dependieran de forma explícita. Esto no sucede con 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 que 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 ello, A debe declarar C en su El cierre de las bibliotecas exportadas está disponible para todas las reglas superiores directas. Veamos un ejemplo ligeramente 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 exportaron 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. Volviendo al ejemplo anterior, si B exporta C y quiere usar C también, debe incluirla en su propia |
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 del compilador global. |
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 del tiempo de ejecución difiere de la biblioteca de compilación, debes asegurarte de que difiera solo en los lugares en los que JLS prohíbe los compiladores que se intercalan (y debe ser así 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 según esta biblioteca.
Los archivos incluidos aquí solo deben tener reglas idempotentes, como -dontnote, -dontwarn, assumenosideeffects y reglas que comiencen con -keep. Otras opciones solo pueden aparecer en 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 todos los archivos en el 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 entorno de ejecución. Las herramientas de análisis de dependencias deben ignorar los objetivos que aparecen tanto en runtime_deps como en deps .
|
java_lite_proto_library
Ver el origen de la reglajava_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 código Java a partir de archivos .proto
.
deps
debe apuntar a reglas de proto_library
.
Ejemplo:
java_library(
name = "lib",
runtime_deps = [":foo"],
)
java_lite_proto_library(
name = "foo",
deps = [":bar"],
)
proto_library(
name = "bar",
)
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Un nombre único para este destino. |
deps
|
Lista de etiquetas; el valor predeterminado es proto_library para las que se generará código Java.
|
java_proto_library
Ver el origen de la reglajava_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 código Java a partir de archivos .proto
.
deps
debe apuntar a reglas de proto_library
.
Ejemplo:
java_library(
name = "lib",
runtime_deps = [":foo_java_proto"],
)
java_proto_library(
name = "foo_java_proto",
deps = [":foo_proto"],
)
proto_library(
name = "foo_proto",
)
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) Un nombre único para este destino. |
deps
|
Lista de etiquetas; el valor predeterminado es proto_library para las que se generará código Java.
|
java_test
Ver el origen 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, 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 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 que se compile la clase principal.
Objetivos de salida implícitos
name.jar
: Es un archivo de Java.name_deploy.jar
: Es un archivo Java adecuado para la implementación. (Solo se compila si se solicita explícitamente). Consulta la descripción de la salidaname_deploy.jar
de java_binary para obtener más detalles.
Consulta la sección sobre los argumentos java_binary()
. 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) 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 de origen de tipo
Los archivos de origen de tipo
Reglas: Si la regla (por lo general,
Casi siempre se requiere este argumento, 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 de origen o generados.
Si se especifican los recursos, se agruparán en el jar junto con los archivos |
add_exports
|
Lista de cadenas; el valor predeterminado es module o la package determinada.
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
Una lista de recursos que deben estar ubicados en la raíz del árbol de Java. El único propósito de este atributo es admitir bibliotecas de terceros que requieran 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 "Make variable".
|
javacopts
|
Lista de cadenas; el valor predeterminado es Estas opciones del compilador se pasan a javac después de las opciones del compilador global. |
jvm_flags
|
Lista de cadenas; el valor predeterminado es La secuencia de comandos del wrapper para un objeto binario de Java incluye una definición de CLASSPATH (para encontrar todos los archivos jar dependientes) y, luego, invoca el intérprete de Java correcto.
La línea de comandos que genera la secuencia de comandos del 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 que se incluye con el JDK.
El destino debe ser un cc_binary . Cualquier cc_binary que implemente la
API de Java Invocation se puede especificar como un valor para este atributo.
De forma predeterminada, Bazel usará el launcher 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 selector de JDK o algún otro selector:
Cuando se usa cualquier selector que no sea el selector predeterminado de JDK, cambia el formato del resultado de |
main_class
|
Cadena; el valor predeterminado es main() para 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 hacer un ejecutable desde una biblioteca Java que ya contenga uno o más métodos main() .
El valor de este atributo es un nombre de clase, no un archivo de origen. La clase debe estar disponible durante el tiempo de ejecución: se la puede compilar mediante esta regla (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 todos los archivos en el 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 entorno de ejecución. Las herramientas de análisis de dependencias deben ignorar los objetivos que aparecen tanto en runtime_deps como en deps .
|
stamp
|
Número entero; el valor predeterminado es
Los objetos binarios sellados no se vuelven a compilar, a menos que cambien sus dependencias. |
test_class
|
Cadena; el valor predeterminado es
De forma predeterminada, si este argumento no está definido, 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 de Java que ejecutará esta prueba. Es poco frecuente tener que configurar esto. Si se omite este argumento, se inferirá con el
Para JUnit3, la clase de prueba debe ser una subclase de
Este atributo permite que varias reglas |
use_launcher
|
Booleano; el valor predeterminado es Si se establece este atributo como falso, se ignorarán el atributo launcher y la marca relacionada |
use_testrunner
|
Booleano; el valor predeterminado es com.google.testing.junit.runner.BazelTestRunner ) como punto de entrada principal para un programa de Java y proporciona la clase de prueba al ejecutor de pruebas como un valor de propiedad del sistema bazel.test_suite .
Puedes usar esto para anular el comportamiento predeterminado, que consiste en usar el ejecutor de pruebas para las reglas java_test , en lugar de usarlo para las reglas java_binary . Es poco probable que quieras hacerlo. Un uso es para las reglas AllTest que invoca otra regla (por ejemplo, para configurar una base de datos antes de ejecutar las pruebas). La regla AllTest debe declararse como java_binary , pero aún debe usar el ejecutor de pruebas como su punto de entrada principal.
El nombre de una clase del ejecutor de pruebas se puede anular con el atributo main_class .
|
java_package_configuration
Ver el origen de la reglajava_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)
Es la configuración que se aplica a un conjunto de paquetes.
Se pueden agregar parámetros de configuración a objetos 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) 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 al que se debe aplicar la configuración.
|
java_plugin
Ver el origen de la reglajava_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
define complementos para el compilador de Java que ejecuta Bazel. Por el momento, los únicos complementos admitidos son los procesadores de anotaciones. Una regla java_library
o java_binary
puede ejecutar complementos según ellos mediante el atributo plugins
. Un java_library
también puede exportar automáticamente complementos a bibliotecas que dependen directamente de él mediante exported_plugins
.
Objetivos de salida implícitos
libname.jar
: Es un archivo de Java.
Los argumentos son idénticos a java_library
, excepto por la adición del argumento processor_class
.
Argumentos
Atributos | |
---|---|
name |
Nombre (obligatorio) 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
Por el contrario, los objetivos del atributo |
srcs
|
Lista de etiquetas; el valor predeterminado es
Se compilan los archivos de origen de tipo
Los archivos de origen de tipo
Reglas: Si la regla (por lo general,
Los archivos de origen de tipo Se ignorarán todos los demás archivos, siempre que haya al menos un archivo de uno de los tipos de archivo descritos anteriormente. De lo contrario, se genera 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 compilas un |
resources
|
Lista de etiquetas; el valor predeterminado es Los recursos pueden ser archivos de origen o generados.
Si se especifican los recursos, se agruparán en el jar junto con los archivos |
add_exports
|
Lista de cadenas; el valor predeterminado es module o la package determinada.
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 API, las otras reglas que dependen de él pueden hacer referencia al código generado solo si sus acciones de compilación están programadas después de la regla de generación. Este atributo le indica a Bazel que introduzca restricciones de programación cuando --java_header_compilation esté habilitado. 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 del compilador global. |
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 del tiempo de ejecución difiere de la biblioteca de compilación, debes asegurarte de que difiera solo en los lugares en los que JLS prohíbe los compiladores que se intercalan (y debe ser así 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 según esta biblioteca.
Los archivos incluidos aquí solo deben tener reglas idempotentes, como -dontnote, -dontwarn, assumenosideeffects y reglas que comiencen con -keep. Otras opciones solo pueden aparecer en 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 todos los archivos en el atributo |
java_runtime
Ver el origen de la reglajava_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)
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) 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 la hermética está habilitada para un destino java_binary y si este no proporciona su propio archivo de CDS mediante la especificación del atributo classlist , 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 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_toolchain
Ver el origen 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, 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)
Especifica la configuración del compilador de Java. La cadena de herramientas que se debe usar se puede cambiar a través del argumento --java_toolchain. Por lo general, no debes escribir ese tipo de reglas, a menos que quieras ajustar el compilador de Java.
Ejemplos
Un ejemplo sencillo 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) 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
|
null; default is |
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_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 |