Reglas de Java

Informa de un problema Ver fuente

Reglas

binario_java

Ver el origen de las reglas
java_binary(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, output_licenses, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)

Compila un archivo Java (“archivo jar”), además de 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 otras cosas, un archivo jar para cada biblioteca de la que depende el objeto binario.

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 aceptadas por 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 o fuente").
  • name_deploy.jar: Es un archivo de Java adecuado para la implementación (solo compilado si se solicita de manera explícita).

    Cuando se compila el destino <name>_deploy.jar para la regla, se crea un archivo jar autónomo con un manifiesto que permite que se ejecute con el comando java -jar o con la opción --singlejar de la secuencia de comandos del wrapper. Se prefiere usar la secuencia de comandos wrapper que java -jar, ya que también pasa las marcas 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 buscaron en la ruta de clase desde la secuencia de comandos wrapper del objeto binario de principio a fin. También contiene las bibliotecas nativas necesarias para las dependencias. Estos se cargan de forma automática en la JVM durante el tiempo de ejecución.

    Si el objetivo especifica un atributo launcher, en lugar de ser un archivo JAR normal, _deploy.jar será un objeto binario nativo. Este contendrá el selector y cualquier dependencia nativa (C++) de tu regla, todas vinculadas a un objeto binario estático. Los bytes del archivo jar real se adjuntarán a ese objeto 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. Estas coincidirán con las clases de deploy.jar, excepto en los casos en que los archivos jar no tengan un jar fuente original que coincida.

No se permite el atributo deps en una regla java_binary sin srcs. Esta regla requiere una main_class proporcionada 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
)

Haz lo siguiente:

java_binary(
    name = "DoThisInstead",
    srcs = [
        ...,
        ":generating_rule",
    ],
)

Argumentos

Atributos
name

Name; required

Es un nombre único para este destino.


Se recomienda usar el nombre del archivo fuente que es 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

List of labels; optional

Es la lista de otras bibliotecas que se vincularán al destino. Consulta los comentarios generales sobre deps en Atributos típicos definidos por la mayoría de las reglas de compilación.
srcs

List of labels; optional

La lista de archivos de origen que se procesan para crear el destino. Este atributo casi siempre es obligatorio. Consulta las excepciones a continuación.

Se compilan los archivos de origen del tipo .java. Por lo general, en el caso de los archivos .java generados, se recomienda colocar el nombre de la regla de generación aquí en lugar del nombre del archivo. Esto no solo mejora la legibilidad, sino que también hace que la regla sea más resistente a los cambios futuros: si la regla de generación genera archivos diferentes en el futuro, solo debes corregir un lugar: el outs de la regla de generación. No debes enumerar la regla de generación en deps porque es una no-op.

Se descomprimen y compilan los archivos de origen de tipo .srcjar. (esto es útil si necesitas generar un conjunto de archivos .java con una genrule).

Reglas: Si la regla (por lo general, genrule o filegroup) genera alguno de los archivos antes mencionados, se usarán de la misma manera que se describe para los archivos fuente.

Este argumento casi siempre es obligatorio, excepto si un atributo main_class especifica una clase en la ruta de clase de tiempo de ejecución o si especificas el argumento runtime_deps.

resources

List of labels; optional

Una lista de archivos de datos para incluir en un jar de Java.

Si se especifican los recursos, se empaquetarán en el jar junto con los archivos .class habituales producidos por la compilación. La ubicación de los recursos dentro del archivo jar está determinada por la estructura del proyecto. Bazel primero busca el diseño de directorio estándar de Maven (un directorio “src” seguido de un nieto del directorio “resources”). Si no se encuentra, Bazel busca el directorio superior llamado “java” o “javatests” (por ejemplo, si un recurso está en <workspace root>/x/java/y/java/z, la ruta de acceso del recurso será y/java/z. Esta heurística no se puede anular, pero puedes usar el atributo resource_strip_prefix a fin de especificar un directorio alternativo específico para los archivos de recursos.

Los recursos pueden ser archivos fuente o generados.

classpath_resources

List of labels; optional

NO USAR ESTA OPCIÓN A MENOS QUE NO HAY OTRA MANERA

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 requieren que sus recursos se encuentren en la ruta de clase como exactamente "myconfig.xml". Solo se permite en objetos binarios y no bibliotecas, debido al riesgo de conflictos de espacios de nombres.

create_executable

Boolean; optional; nonconfigurable; default is True

Indica si el objeto binario es ejecutable. Los objetos binarios no ejecutables recopilan dependencias de Java en tiempo de ejecución de transición en un jar de implementación, pero no se pueden ejecutar directamente. No se crea ninguna secuencia de comandos wrapper si se configura este atributo. Es un error establecerlo en 0 si se configuran los atributos launcher o main_class.
deploy_env

List of labels; optional

Una lista de otros destinos java_binary que representan el entorno de implementación de este objeto binario. Configura este atributo cuando se compila un complemento que cargará otro java_binary.
La configuración de este atributo excluye 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 y los destinos especificados en deploy_env.
deploy_manifest_lines

List of strings; optional

Una lista de líneas para agregar al archivo META-INF/manifest.mf generado para el destino *_deploy.jar. El contenido de este atributo no está sujeto a la sustitución de "Make variable".
javacopts

List of strings; optional

Opciones adicionales del compilador para esta biblioteca. Sujeto a la sustitución de "Make variable" y a la asignación de token de shell Bourne.

Estas opciones del compilador se pasan a javac después de las opciones del compilador global.

jvm_flags

List of strings; optional

Una lista de marcas para incorporar en la secuencia de comandos del wrapper generada para ejecutar este objeto binario. Sujeto a la sustitución de $(location) y "Make variable", y a la Asignación de token de shell.

La secuencia de comandos wrapper de 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 "$@" para que puedas pasar otros argumentos después del nombre de la clase. Sin embargo, los argumentos destinados al análisis mediante la JVM deben especificarse antes del nombre de la clase en la línea de comandos. El contenido de jvm_flags se agrega a la secuencia de comandos del wrapper antes de que se muestre el nombre de la clase.

Ten en cuenta que este atributo no tiene efecto en los resultados de *_deploy.jar.

launcher

Label; optional

Especifica un objeto binario que se usará para ejecutar tu programa de Java en lugar del programa bin/java normal incluido con el JDK. El objetivo 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 normal de JDK (bin/java o java.exe).

La marca --java_launcher de Bazel relacionada solo afecta a los destinos java_binary y java_test que no especificaron un atributo launcher.

Ten en cuenta que tus dependencias nativas (C++, SWIG o JNI) se crearán de manera diferente según si usas el selector de JDK o algún otro:

  • Si usas el selector normal del JDK (predeterminado), las dependencias nativas se compilan como una biblioteca compartida llamada {name}_nativedeps.so, en la que {name} es el atributo name de esta regla java_binary. El vinculador no quita el código que no se usa en esta configuración.
  • Si usas cualquier otro selector, las dependencias nativas (C++) están vinculadas de forma estática a un objeto binario llamado {name}_nativedeps, en el que {name} es el atributo name de esta regla java_binary. En este caso, el vinculador quitará cualquier código que considere que no está en uso del objeto binario resultante, lo que significa que cualquier código de C++ al que solo se acceda mediante JNI no pueda estar vinculado, a menos que ese objetivo cc_library especifique alwayslink = 1.

Cuando se usa un selector que no sea el predeterminado del JDK, cambia el formato de la salida *_deploy.jar. Consulta la documentación principal de java_binary para obtener más detalles.

main_class

String; optional

Nombre de la clase con el método 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 de una biblioteca de 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 en el entorno de ejecución: esta se puede compilar con esta regla (de srcs) o mediante dependencias directas o transitivas (a través de runtime_deps o deps). Si la clase no está disponible, el objeto binario fallará durante el tiempo de ejecución; no hay verificación de tiempo de compilación.

plugins

List of labels; optional

Complementos del compilador de Java para ejecutar en el tiempo de compilación Cada 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

List of labels; optional

Obsoleto: Usa java_import y deps o Runtime_deps.
resource_strip_prefix

String; optional

Es el prefijo de la ruta de acceso que se debe quitar de los recursos Java.

Si se especifica, se quita este prefijo de ruta de acceso de cada archivo del atributo resources. Es un error que un archivo de recursos no esté en este directorio. Si no se especifica (la opción predeterminada), la ruta del archivo de recursos se determina de acuerdo con la misma lógica que el paquete Java de archivos de origen. Por ejemplo, se ubicará un archivo de origen en stuff/java/foo/bar/a.txt: foo/bar/a.txt.

runtime_deps

List of labels; optional

Bibliotecas que estarán disponibles para el objeto binario final o solo se prueban en el entorno de ejecución. Al igual que el deps común, 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 incluir las dependencias necesarias solo en el entorno de ejecución. Las herramientas de análisis de dependencia deben ignorar los destinos que aparecen en runtime_deps y deps.
stamp

Integer; optional; default is -1

Si se debe codificar información de compilación en el objeto binario Valores posibles:
  • stamp = 1: Siempre sella la información de compilación en el objeto binario, incluso en las compilaciones de --nostamp. Se debe evitar esta configuración, ya que podría cerrar el almacenamiento en caché remoto para el objeto binario y cualquier acción descendente que dependa de él.
  • stamp = 0: Reemplaza siempre la información de compilación por valores constantes. Esto brinda un buen almacenamiento en caché de resultados de compilación.
  • stamp = -1: La marca --[no]stamp controla la incorporación de información de compilación.

Los objetos binarios con sellos no se vuelven a compilar, a menos que cambien sus dependencias.

use_launcher

Boolean; optional; default is True

Si el objeto binario debe usar un selector personalizado

Si este atributo se establece como falso, se ignorarán el atributo launcher y la marca --java_launcher relacionada para este destino.

use_testrunner

Boolean; optional; default is False

Usa la clase del ejecutor de pruebas (de forma predeterminada 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 la propiedad del sistema bazel.test_suite. Puedes usar esto a fin de anular el comportamiento predeterminado, que es usar el ejecutor de pruebas para reglas java_test, y no para reglas java_binary. Es poco probable que quieras hacer esto. 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). La regla AllTest debe declararse como java_binary, pero igual debe usar el ejecutor de pruebas como punto de entrada principal. El nombre de una clase de ejecutor de pruebas se puede anular con el atributo main_class.

java_import

Ver el origen de las reglas
java_import(name, deps, data, 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, visibility)

Esta regla permite el uso de archivos .jar precompilados como bibliotecas para 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

Name; required

Es un nombre único para este destino.

deps

List of labels; optional

Es la lista de otras bibliotecas que se vincularán al destino. Consulta java_library.deps.
constraints

List of strings; optional; nonconfigurable

Se aplicaron restricciones adicionales a esta regla como una biblioteca de Java.
exports

List of labels; optional

Objetivos que se pondrán a disposición de los usuarios de esta regla. Consulta java_library.exports.
jars

List of labels; required

La lista de archivos JAR que se proporcionan a los destinos de Java que dependen de este destino.

Boolean; optional; default is False

Solo debes usar esta biblioteca para la compilación y no durante el tiempo de ejecución. Es útil si el entorno de ejecución proporcionará la biblioteca durante la ejecución. Algunos ejemplos de bibliotecas como esta son las APIs de IDE para complementos de IDE o tools.jar para cualquier elemento que se ejecute en un JDK estándar.
proguard_specs

List of labels; optional

Archivos que se usarán como especificación de Proguard. Estos describirán el conjunto de especificaciones que usará Proguard. Si se especifica, se agregarán a cualquier destino de android_binary según esta biblioteca. Los archivos que se incluyen aquí solo deben tener reglas idempotentes, es decir, -dontnote, -dontwarn, sumnosideeffects y reglas que comienzan con -keep. Otras opciones solo pueden aparecer en proguard_specs de android_binary para garantizar combinaciones no tautológicas.
runtime_deps

List of labels; optional

Bibliotecas que estarán disponibles para el objeto binario final o solo se prueban en el entorno de ejecución. Consulta java_library.runtime_deps.
srcjar

Label; optional

Un archivo JAR que contiene código fuente para los archivos JAR compilados

java_library

Ver el origen de las reglas
java_library(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javacopts, licenses, neverlink, plugins, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, visibility)

Esta regla compila y vincula fuentes en un archivo .jar.

Objetivos de salida 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 o fuente").

Argumentos

Atributos
name

Name; required

Es un nombre único para este destino.

deps

List of labels; optional

Es la lista de bibliotecas que se vincularán a esta biblioteca. Consulta los comentarios generales sobre deps en Atributos típicos definidos por la mayoría de las reglas de compilación.

Los archivos jar que compilan las reglas de java_library que se enumeran en deps estarán en la ruta de clase de tiempo de compilación de esta regla. Además, el cierre transitivo de deps, runtime_deps y exports estará en la ruta de clase del entorno de ejecución.

Por el contrario, los objetivos del atributo data se incluyen en los archivos de ejecución, pero no en las rutas de clase de tiempo de compilación ni de tiempo de ejecución.

srcs

List of labels; optional

La lista de archivos de origen que se procesan para crear el destino. Este atributo casi siempre es obligatorio. Consulta las excepciones a continuación.

Se compilan los archivos de origen del tipo .java. Por lo general, en el caso de los archivos .java generados, se recomienda colocar el nombre de la regla de generación aquí en lugar del nombre del archivo. Esto no solo mejora la legibilidad, sino que también hace que la regla sea más resistente a los cambios futuros: si la regla de generación genera archivos diferentes en el futuro, solo debes corregir un lugar: el outs de la regla de generación. No debes enumerar la regla de generación en deps porque es una no-op.

Se descomprimen y compilan los archivos de origen de tipo .srcjar. (esto es útil si necesitas generar un conjunto de archivos .java con una genrule).

Reglas: Si la regla (por lo general, genrule o filegroup) genera alguno de los archivos antes mencionados, se usarán de la misma manera que se describe para los archivos fuente.

Este argumento casi siempre es obligatorio, excepto si un atributo main_class especifica una clase en la ruta de clase de tiempo de ejecución o si especificas el argumento runtime_deps.

data

List of labels; optional

La lista de archivos que necesita esta biblioteca en el entorno de ejecución. Consulta los comentarios generales sobre data en Atributos típicos definidos por la mayoría de las reglas de compilación.

Cuando se compila un java_library, Bazel no coloca estos archivos en ningún lugar. Si los archivos data se generan, Bazel los genera. Cuando compilas una prueba que depende de este java_library de Bazel, copia o vincula los archivos data en el área de los archivos de ejecución.

resources

List of labels; optional

Una lista de archivos de datos para incluir en un jar de Java.

Si se especifican los recursos, se empaquetarán en el jar junto con los archivos .class habituales producidos por la compilación. La ubicación de los recursos dentro del archivo jar está determinada por la estructura del proyecto. Bazel primero busca el diseño de directorio estándar de Maven (un directorio “src” seguido de un nieto del directorio “resources”). Si no se encuentra, Bazel busca el directorio superior llamado “java” o “javatests” (por ejemplo, si un recurso está en <workspace root>/x/java/y/java/z, la ruta de acceso del recurso será y/java/z. Esta heurística no se puede anular, pero puedes usar el atributo resource_strip_prefix a fin de especificar un directorio alternativo específico para los archivos de recursos.

Los recursos pueden ser archivos fuente o generados.

exported_plugins

List of labels; optional

Indica la lista de java_plugin (p.ej., procesadores de anotaciones) para exportar a bibliotecas que dependen directamente de esta biblioteca.

La lista especificada de java_plugin se aplicará a cualquier biblioteca que dependa directamente de ella, como si esa biblioteca declarara explícitamente estas etiquetas en plugins.

exports

List of labels; optional

Bibliotecas exportadas.

Aquí, las reglas de listas los pondrán a disposición para las reglas superiores, como si los superiores dependieran de forma explícita de ellas. Esto no es así para el deps normal (no exportado).

Resumen: Una regla X puede acceder al código en Y si existe una ruta de dependencia entre ellos que comienza con un borde deps seguido de cero o más bordes exports. Veamos algunos ejemplos.

Supongamos que A se basa en B y B se basa en C. En este caso, C es una dependencia transitiva de A, por lo que cambiar las fuentes de C y recompilar A recompilará correctamente todo. Sin embargo, A no podrá usar clases en C. A fin de permitir eso, A debe declarar C en su deps, o B puede facilitar que A (y cualquier elemento que pueda depender de A) declare C en su atributo exports (B).

El cierre de las bibliotecas exportadas está disponible para todas las reglas superiores directas. Tomemos 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. Si C y D exportaron algunas bibliotecas, C' y D' respectivamente, A solo podría acceder a C', pero no D'.

Importante: Una regla exportada no es una dependencia normal. De acuerdo con el ejemplo anterior, si B exporta C y desea usar C también, debe enumerarlo en su propio deps.

javacopts

List of strings; optional

Opciones adicionales del compilador para esta biblioteca. Sujeto a la sustitución de "Make variable" y a la asignación de token de shell Bourne.

Estas opciones del compilador se pasan a javac después de las opciones del compilador global.

Boolean; optional; default is False

Indica si esta biblioteca debe usarse solo para la compilación y no durante el tiempo de ejecución. Es útil si el entorno de ejecución proporcionará la biblioteca durante la ejecución. Algunos ejemplos de esas bibliotecas son las APIs de IDE para complementos de IDE o tools.jar para cualquier elemento que se ejecute en un JDK estándar.

Ten en cuenta que neverlink = 1 no impide que el compilador incorpore material de esta biblioteca en destinos de compilación que dependan de él, como lo permite la especificación del lenguaje Java (p.ej., static final constantes de String o de tipos primitivos). Por lo tanto, el caso de uso preferido es cuando la biblioteca del entorno de ejecución es idéntica a la biblioteca de la compilación.

Si la biblioteca del entorno de ejecución es diferente de la biblioteca de compilación, debes asegurarte de que solo se diferencie en los lugares donde el JLS prohíba la compilación de los compiladores (y eso debe mantenerse para todas las versiones futuras del JLS).

plugins

List of labels; optional

Complementos del compilador de Java para ejecutar en el tiempo de compilación Cada 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.
proguard_specs

List of labels; optional

Archivos que se usarán como especificación de Proguard. Estos describirán el conjunto de especificaciones que usará Proguard. Si se especifica, se agregarán a cualquier destino de android_binary según esta biblioteca. Los archivos que se incluyen aquí solo deben tener reglas idempotentes, es decir, -dontnote, -dontwarn, sumnosideeffects y reglas que comienzan con -keep. Otras opciones solo pueden aparecer en proguard_specs de android_binary para garantizar combinaciones no tautológicas.
resource_jars

List of labels; optional

Obsoleto: Usa java_import y deps o Runtime_deps.
resource_strip_prefix

String; optional

Es el prefijo de la ruta de acceso que se debe quitar de los recursos Java.

Si se especifica, se quita este prefijo de ruta de acceso de cada archivo del atributo resources. Es un error que un archivo de recursos no esté en este directorio. Si no se especifica (la opción predeterminada), la ruta del archivo de recursos se determina de acuerdo con la misma lógica que el paquete Java de archivos de origen. Por ejemplo, se ubicará un archivo de origen en stuff/java/foo/bar/a.txt: foo/bar/a.txt.

runtime_deps

List of labels; optional

Bibliotecas que estarán disponibles para el objeto binario final o solo se prueban en el entorno de ejecución. Al igual que el deps común, 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 incluir las dependencias necesarias solo en el entorno de ejecución. Las herramientas de análisis de dependencia deben ignorar los destinos que aparecen en runtime_deps y deps.

biblioteca_proto_java_lite

Ver el origen de las reglas
java_lite_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, 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",
    deps = [":foo"],
)

java_lite_proto_library(
    name = "foo",
    deps = [":bar"],
)

proto_library(
    name = "bar",
)

Argumentos

Atributos
name

Name; required

Es un nombre único para este destino.

deps

List of labels; optional

La lista de reglas proto_library para las que se generará el código de Java.

java_proto_library

Ver el origen de las reglas
java_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, 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",
    deps = [":foo_java_proto"],
)

java_proto_library(
    name = "foo_java_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

Argumentos

Atributos
name

Name; required

Es un nombre único para este destino.

deps

List of labels; optional

La lista de reglas proto_library para las que se generará el código de Java.

prueba_java

Ver el origen de las reglas
java_test(name, deps, srcs, data, resources, args, 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, plugins, resource_jars, 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 al método principal del ejecutor de pruebas en lugar de la clase principal que se compila.

Objetivos de salida implícitos

  • name.jar: Es un archivo de Java.
  • name_deploy.jar: Es un archivo de Java adecuado para la implementación. (Solo se compila si se solicita de manera explícita). Consulta la descripción del resultado name_deploy.jar de java_binary para obtener más detalles.

Consulta la sección sobre los argumentos 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

Name; required

Es un nombre único para este destino.

deps

List of labels; optional

Es la lista de otras bibliotecas que se vincularán al destino. Consulta los comentarios generales sobre deps en Atributos típicos definidos por la mayoría de las reglas de compilación.
srcs

List of labels; optional

La lista de archivos de origen que se procesan para crear el destino. Este atributo casi siempre es obligatorio. Consulta las excepciones a continuación.

Se compilan los archivos de origen del tipo .java. Por lo general, en el caso de los archivos .java generados, se recomienda colocar el nombre de la regla de generación aquí en lugar del nombre del archivo. Esto no solo mejora la legibilidad, sino que también hace que la regla sea más resistente a los cambios futuros: si la regla de generación genera archivos diferentes en el futuro, solo debes corregir un lugar: el outs de la regla de generación. No debes enumerar la regla de generación en deps porque es una no-op.

Se descomprimen y compilan los archivos de origen de tipo .srcjar. (esto es útil si necesitas generar un conjunto de archivos .java con una genrule).

Reglas: Si la regla (por lo general, genrule o filegroup) genera alguno de los archivos antes mencionados, se usarán de la misma manera que se describe para los archivos fuente.

Este argumento casi siempre es obligatorio, excepto si un atributo main_class especifica una clase en la ruta de clase de tiempo de ejecución o si especificas el argumento runtime_deps.

resources

List of labels; optional

Una lista de archivos de datos para incluir en un jar de Java.

Si se especifican los recursos, se empaquetarán en el jar junto con los archivos .class habituales producidos por la compilación. La ubicación de los recursos dentro del archivo jar está determinada por la estructura del proyecto. Bazel primero busca el diseño de directorio estándar de Maven (un directorio “src” seguido de un nieto del directorio “resources”). Si no se encuentra, Bazel busca el directorio superior llamado “java” o “javatests” (por ejemplo, si un recurso está en <workspace root>/x/java/y/java/z, la ruta de acceso del recurso será y/java/z. Esta heurística no se puede anular, pero puedes usar el atributo resource_strip_prefix a fin de especificar un directorio alternativo específico para los archivos de recursos.

Los recursos pueden ser archivos fuente o generados.

classpath_resources

List of labels; optional

NO USAR ESTA OPCIÓN A MENOS QUE NO HAY OTRA MANERA

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 requieren que sus recursos se encuentren en la ruta de clase como exactamente "myconfig.xml". Solo se permite en objetos binarios y no bibliotecas, debido al riesgo de conflictos de espacios de nombres.

create_executable

Boolean; optional; nonconfigurable; default is True

Indica si el objeto binario es ejecutable. Los objetos binarios no ejecutables recopilan dependencias de Java en tiempo de ejecución de transición en un jar de implementación, pero no se pueden ejecutar directamente. No se crea ninguna secuencia de comandos wrapper si se configura este atributo. Es un error establecerlo en 0 si se configuran los atributos launcher o main_class.
deploy_manifest_lines

List of strings; optional

Una lista de líneas para agregar al archivo META-INF/manifest.mf generado para el destino *_deploy.jar. El contenido de este atributo no está sujeto a la sustitución de "Make variable".
javacopts

List of strings; optional

Opciones adicionales del compilador para esta biblioteca. Sujeto a la sustitución de "Make variable" y a la asignación de token de shell Bourne.

Estas opciones del compilador se pasan a javac después de las opciones del compilador global.

jvm_flags

List of strings; optional

Una lista de marcas para incorporar en la secuencia de comandos del wrapper generada para ejecutar este objeto binario. Sujeto a la sustitución de $(location) y "Make variable", y a la Asignación de token de shell.

La secuencia de comandos wrapper de 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 "$@" para que puedas pasar otros argumentos después del nombre de la clase. Sin embargo, los argumentos destinados al análisis mediante la JVM deben especificarse antes del nombre de la clase en la línea de comandos. El contenido de jvm_flags se agrega a la secuencia de comandos del wrapper antes de que se muestre el nombre de la clase.

Ten en cuenta que este atributo no tiene efecto en los resultados de *_deploy.jar.

launcher

Label; optional

Especifica un objeto binario que se usará para ejecutar tu programa de Java en lugar del programa bin/java normal incluido con el JDK. El objetivo 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 normal de JDK (bin/java o java.exe).

La marca --java_launcher de Bazel relacionada solo afecta a los destinos java_binary y java_test que no especificaron un atributo launcher.

Ten en cuenta que tus dependencias nativas (C++, SWIG o JNI) se crearán de manera diferente según si usas el selector de JDK o algún otro:

  • Si usas el selector normal del JDK (predeterminado), las dependencias nativas se compilan como una biblioteca compartida llamada {name}_nativedeps.so, en la que {name} es el atributo name de esta regla java_binary. El vinculador no quita el código que no se usa en esta configuración.
  • Si usas cualquier otro selector, las dependencias nativas (C++) están vinculadas de forma estática a un objeto binario llamado {name}_nativedeps, en el que {name} es el atributo name de esta regla java_binary. En este caso, el vinculador quitará cualquier código que considere que no está en uso del objeto binario resultante, lo que significa que cualquier código de C++ al que solo se acceda mediante JNI no pueda estar vinculado, a menos que ese objetivo cc_library especifique alwayslink = 1.

Cuando se usa un selector que no sea el predeterminado del JDK, cambia el formato de la salida *_deploy.jar. Consulta la documentación principal de java_binary para obtener más detalles.

main_class

String; optional

Nombre de la clase con el método 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 de una biblioteca de 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 en el entorno de ejecución: esta se puede compilar con esta regla (de srcs) o mediante dependencias directas o transitivas (a través de runtime_deps o deps). Si la clase no está disponible, el objeto binario fallará durante el tiempo de ejecución; no hay verificación de tiempo de compilación.

plugins

List of labels; optional

Complementos del compilador de Java para ejecutar en el tiempo de compilación Cada 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

List of labels; optional

Obsoleto: Usa java_import y deps o Runtime_deps.
resource_strip_prefix

String; optional

Es el prefijo de la ruta de acceso que se debe quitar de los recursos Java.

Si se especifica, se quita este prefijo de ruta de acceso de cada archivo del atributo resources. Es un error que un archivo de recursos no esté en este directorio. Si no se especifica (la opción predeterminada), la ruta del archivo de recursos se determina de acuerdo con la misma lógica que el paquete Java de archivos de origen. Por ejemplo, se ubicará un archivo de origen en stuff/java/foo/bar/a.txt: foo/bar/a.txt.

runtime_deps

List of labels; optional

Bibliotecas que estarán disponibles para el objeto binario final o solo se prueban en el entorno de ejecución. Al igual que el deps común, 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 incluir las dependencias necesarias solo en el entorno de ejecución. Las herramientas de análisis de dependencia deben ignorar los destinos que aparecen en runtime_deps y deps.
stamp

Integer; optional; default is 0

Si se debe codificar información de compilación en el objeto binario Valores posibles:
  • stamp = 1: Siempre sella la información de compilación en el objeto binario, incluso en las compilaciones de --nostamp. Se debe evitar esta configuración, ya que podría cerrar el almacenamiento en caché remoto para el objeto binario y cualquier acción descendente que dependa de él.
  • stamp = 0: Reemplaza siempre la información de compilación por valores constantes. Esto brinda un buen almacenamiento en caché de resultados de compilación.
  • stamp = -1: La marca --[no]stamp controla la incorporación de información de compilación.

Los objetos binarios con sellos no se vuelven a compilar, a menos que cambien sus dependencias.

test_class

String; optional

La clase Java que cargará el ejecutor de pruebas.

De forma predeterminada, si este argumento no está definido, se usa el modo heredado y, en su lugar, se usan los argumentos de prueba. Configura la marca --nolegacy_bazel_java_test para que no tenga resguardo en el primer argumento.

Este atributo especifica el nombre de una clase de Java que ejecutará esta prueba. No es común establecer esto. Si se omite este argumento, se inferirá mediante el name del destino y su ruta de acceso raíz de origen. Si la prueba se encuentra fuera de una raíz de origen conocida, Bazel informará un error si no se configura test_class.

Para JUnit3, la clase de prueba debe ser una subclase de junit.framework.TestCase o debe tener un método suite() estático público que muestre un junit.framework.Test (o una subclase de Test). Para JUnit4, la clase debe anotarse con org.junit.runner.RunWith.

Este atributo permite que varias reglas java_test compartan el mismo Test (TestCase, TestSuite, ...). Por lo general, se pasa información adicional a este (p.ej., a través de jvm_flags=['-Dkey=value']) para que su comportamiento difiera en cada caso, como ejecutar un subconjunto diferente de pruebas. Este atributo también permite usar pruebas de Java fuera del árbol de javatests.

use_launcher

Boolean; optional; default is True

Si el objeto binario debe usar un selector personalizado

Si este atributo se establece como falso, se ignorarán el atributo launcher y la marca --java_launcher relacionada para este destino.

use_testrunner

Boolean; optional; default is True

Usa la clase del ejecutor de pruebas (de forma predeterminada 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 la propiedad del sistema bazel.test_suite. Puedes usar esto a fin de anular el comportamiento predeterminado, que es usar el ejecutor de pruebas para reglas java_test, y no para reglas java_binary. Es poco probable que quieras hacer esto. 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). La regla AllTest debe declararse como java_binary, pero igual debe usar el ejecutor de pruebas como 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 el origen de las reglas
java_package_configuration(name, data, compatible_with, deprecation, distribs, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, visibility)

Configuración para aplicar a un conjunto de paquetes. Se pueden agregar parámetros de configuración a 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

Name; required

Es un nombre único para este destino.

data

List of labels; optional

La lista de archivos que necesita esta configuración en el entorno de ejecución.
javacopts

List of strings; optional

Indicadores del compilador de Java.
packages

List of labels; optional

El conjunto de package_group al que se debe aplicar la configuración.

java_plugin

Ver el origen de las reglas
java_plugin(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, visibility)

java_plugin define los complementos del compilador de Java que ejecuta Bazel. Por el momento, los únicos complementos compatibles son los procesadores de anotaciones. Una regla java_library o java_binary puede ejecutar complementos según los atributos 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

Name; required

Es un nombre único para este destino.

deps

List of labels; optional

Es la lista de bibliotecas que se vincularán a esta biblioteca. Consulta los comentarios generales sobre deps en Atributos típicos definidos por la mayoría de las reglas de compilación.

Los archivos jar que compilan las reglas de java_library que se enumeran en deps estarán en la ruta de clase de tiempo de compilación de esta regla. Además, el cierre transitivo de deps, runtime_deps y exports estará en la ruta de clase del entorno de ejecución.

Por el contrario, los objetivos del atributo data se incluyen en los archivos de ejecución, pero no en las rutas de clase de tiempo de compilación ni de tiempo de ejecución.

srcs

List of labels; optional

La lista de archivos de origen que se procesan para crear el destino. Este atributo casi siempre es obligatorio. Consulta las excepciones a continuación.

Se compilan los archivos de origen del tipo .java. Por lo general, en el caso de los archivos .java generados, se recomienda colocar el nombre de la regla de generación aquí en lugar del nombre del archivo. Esto no solo mejora la legibilidad, sino que también hace que la regla sea más resistente a los cambios futuros: si la regla de generación genera archivos diferentes en el futuro, solo debes corregir un lugar: el outs de la regla de generación. No debes enumerar la regla de generación en deps porque es una no-op.

Se descomprimen y compilan los archivos de origen de tipo .srcjar. (esto es útil si necesitas generar un conjunto de archivos .java con una genrule).

Reglas: Si la regla (por lo general, genrule o filegroup) genera alguno de los archivos antes mencionados, se usarán de la misma manera que se describe para los archivos fuente.

Este argumento casi siempre es obligatorio, excepto si un atributo main_class especifica una clase en la ruta de clase de tiempo de ejecución o si especificas el argumento runtime_deps.

data

List of labels; optional

La lista de archivos que necesita esta biblioteca en el entorno de ejecución. Consulta los comentarios generales sobre data en Atributos típicos definidos por la mayoría de las reglas de compilación.

Cuando se compila un java_library, Bazel no coloca estos archivos en ningún lugar. Si los archivos data se generan, Bazel los genera. Cuando compilas una prueba que depende de este java_library de Bazel, copia o vincula los archivos data en el área de los archivos de ejecución.

resources

List of labels; optional

Una lista de archivos de datos para incluir en un jar de Java.

Si se especifican los recursos, se empaquetarán en el jar junto con los archivos .class habituales producidos por la compilación. La ubicación de los recursos dentro del archivo jar está determinada por la estructura del proyecto. Bazel primero busca el diseño de directorio estándar de Maven (un directorio “src” seguido de un nieto del directorio “resources”). Si no se encuentra, Bazel busca el directorio superior llamado “java” o “javatests” (por ejemplo, si un recurso está en <workspace root>/x/java/y/java/z, la ruta de acceso del recurso será y/java/z. Esta heurística no se puede anular, pero puedes usar el atributo resource_strip_prefix a fin de especificar un directorio alternativo específico para los archivos de recursos.

Los recursos pueden ser archivos fuente o generados.

generates_api

Boolean; optional; default is False

Este atributo marca los procesadores de anotaciones que generan código de API.

Si una regla usa un procesador de anotaciones que genera una API, 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 que lo genera. Este atributo indica a Bazel que introduzca restricciones de programación cuando se habilite --java_header_compilation.

ADVERTENCIA: Este atributo afecta el rendimiento de la compilación; úsalo solo si es necesario.

javacopts

List of strings; optional

Opciones adicionales del compilador para esta biblioteca. Sujeto a la sustitución de "Make variable" y a la asignación de token de shell Bourne.

Estas opciones del compilador se pasan a javac después de las opciones del compilador global.

Boolean; optional; default is False

Indica si esta biblioteca debe usarse solo para la compilación y no durante el tiempo de ejecución. Es útil si el entorno de ejecución proporcionará la biblioteca durante la ejecución. Algunos ejemplos de esas bibliotecas son las APIs de IDE para complementos de IDE o tools.jar para cualquier elemento que se ejecute en un JDK estándar.

Ten en cuenta que neverlink = 1 no impide que el compilador incorpore material de esta biblioteca en destinos de compilación que dependan de él, como lo permite la especificación del lenguaje Java (p.ej., static final constantes de String o de tipos primitivos). Por lo tanto, el caso de uso preferido es cuando la biblioteca del entorno de ejecución es idéntica a la biblioteca de la compilación.

Si la biblioteca del entorno de ejecución es diferente de la biblioteca de compilación, debes asegurarte de que solo se diferencie en los lugares donde el JLS prohíba la compilación de los compiladores (y eso debe mantenerse para todas las versiones futuras del JLS).

output_licenses

Licence type; optional

Consulta common attributes .
plugins

List of labels; optional

Complementos del compilador de Java para ejecutar en el tiempo de compilación Cada 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.
processor_class

String; optional

La clase de procesador es el tipo completamente calificado de la clase que el compilador de Java debe usar como punto de entrada al procesador de anotaciones. Si no se especifica, esta regla no aportará un procesador de anotaciones al procesamiento de anotaciones del compilador de Java, pero la ruta de clase de tiempo de ejecución se incluirá en la ruta del procesador de anotaciones del compilador. (principalmente, está diseñada para que la usen los complementos propensos a errores, que se cargan desde la ruta del procesador de anotaciones mediante java.util.ServiceLoader).
proguard_specs

List of labels; optional

Archivos que se usarán como especificación de Proguard. Estos describirán el conjunto de especificaciones que usará Proguard. Si se especifica, se agregarán a cualquier destino de android_binary según esta biblioteca. Los archivos que se incluyen aquí solo deben tener reglas idempotentes, es decir, -dontnote, -dontwarn, sumnosideeffects y reglas que comienzan con -keep. Otras opciones solo pueden aparecer en proguard_specs de android_binary para garantizar combinaciones no tautológicas.
resource_jars

List of labels; optional

Obsoleto: Usa java_import y deps o Runtime_deps.
resource_strip_prefix

String; optional

Es el prefijo de la ruta de acceso que se debe quitar de los recursos Java.

Si se especifica, se quita este prefijo de ruta de acceso de cada archivo del atributo resources. Es un error que un archivo de recursos no esté en este directorio. Si no se especifica (la opción predeterminada), la ruta del archivo de recursos se determina de acuerdo con la misma lógica que el paquete Java de archivos de origen. Por ejemplo, se ubicará un archivo de origen en stuff/java/foo/bar/a.txt: foo/bar/a.txt.

tiempo de ejecución de java

Ver el origen de las reglas
java_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_modules, licenses, restricted_to, tags, target_compatible_with, testonly, 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

Name; required

Es un nombre único para este destino.

srcs

List of labels; optional

Todos los archivos en el entorno de ejecución.
default_cds

Label; optional

Archivo CDS predeterminado para el parámetro hermético java_runtime. Cuando la hermética está habilitada para un destino java_binary y si el objetivo no proporciona su propio archivo de CDS mediante la especificación del atributo classlist, la CDS predeterminada de java_runtime se empaqueta en el archivo JAR de implementación hermética.
hermetic_srcs

List of labels; optional

Archivos en el entorno de ejecución necesarios para las implementaciones herméticas.
java

Label; optional

La ruta de acceso al ejecutable de Java.
java_home

String; optional

La ruta de acceso a la raíz del entorno de ejecución. Sujeto a la sustitución de la variable"Make". Si esta ruta es absoluta, la regla denota un entorno de ejecución de Java no hermético con una ruta conocida. En ese caso, los atributos srcs y java deben estar vacíos.
lib_modules

Label; optional

El archivo lib/modules necesario para las implementaciones herméticas.
version

Integer; optional; default is 0

La versión de la función del entorno de ejecución de Java. Es decir, el número entero que muestra Runtime.version().feature().

java_toolchain

Ver el origen de las reglas
java_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_with, deprecation, deps_checker, distribs, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_workers, javacopts, jvm_opts, licenses, oneversion, oneversion_whitelist, package_configuration, proguard_allowlister, resourcejar, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, 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 a través del argumento --java_toolchain. Por lo general, no debes escribir ese tipo de reglas, a menos que desees 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

Name; required

Es un nombre único para este destino.

android_lint_data

List of labels; optional

Etiquetas de herramientas disponibles para la expansión de etiquetas en android_lint_jvm_opts.
android_lint_jvm_opts

List of strings; optional

Es la lista de argumentos para la JVM cuando se invoca a Android Lint.
android_lint_opts

List of strings; optional

Es la lista de argumentos de Android Lint.
android_lint_package_configuration

List of labels; optional

Configuración de lint de Android que se debe aplicar a los grupos de paquetes especificados.
android_lint_runner

Label; optional

Etiqueta del ejecutor de lint de Android, si corresponde.
bootclasspath

List of labels; optional

Las entradas bootclasspath de Java. Corresponde a la marca -bootclasspath de javac.
deps_checker

List of labels; optional

Etiqueta del jar de implementación ImportDepsChecker.
forcibly_disable_header_compilation

Boolean; optional; default is False

Anula --java_header_compilation para inhabilitar la compilación de encabezados en plataformas que no lo admiten, p.ej., JDK 7 Bazel.
genclass

List of labels; required

Etiqueta del jar de implementación de GenClass.
header_compiler

List of labels; optional

Etiqueta del compilador de encabezados. Es obligatorio si está habilitado --java_header_compilation.
header_compiler_direct

List of labels; optional

Etiqueta opcional del compilador del encabezado que se usa para acciones de ruta de clase directas que no incluyen ningún procesador de anotaciones que genere la API.

Esta herramienta no admite el procesamiento de anotaciones.

ijar

List of labels; required

Etiqueta del ejecutable de ijar.
jacocorunner

Label; optional

Etiqueta del jar de implementación de JacocoCoverageRunner.
java_runtime

Label; required

El java_runtime que se usará con esta cadena de herramientas. El valor predeterminado es java_runtime en la configuración de ejecución.
javabuilder

List of labels; required

Etiqueta del jar de implementación de JavaBuilder.
javabuilder_data

List of labels; optional

Etiquetas de datos disponibles para la expansión de etiquetas en javabuilder_jvm_opts.
javabuilder_jvm_opts

List of strings; optional

Es la lista de argumentos para la JVM cuando se invoca JavaBuilder.
javac_supports_multiplex_workers

Boolean; optional; default is True

Verdadero si JavaBuilder admite la ejecución como un trabajador multiplex persistente; falso si no lo es.
javac_supports_workers

Boolean; optional; default is True

Verdadero si JavaBuilder admite la ejecución como trabajador persistente; falso si no.
javacopts

List of strings; optional

Es la lista de argumentos adicionales para el compilador de Java. Consulta la documentación del compilador de Java para obtener una lista completa de los posibles indicadores del compilador de Java.
jvm_opts

List of strings; optional

Es la lista de argumentos para la JVM cuando se invoca el compilador de Java. Consulta la documentación de la máquina virtual Java para obtener la lista completa de marcas posibles para esta opción.
oneversion

Label; optional

Etiqueta del objeto binario de aplicación de una versión.
oneversion_whitelist

Label; optional

Etiqueta de la lista blanca de una versión.
package_configuration

List of labels; optional

La configuración que se debe aplicar a los grupos de paquetes especificados.
proguard_allowlister

Label; optional; default is @bazel_tools//tools/jdk:proguard_whitelister

Etiqueta del lista de entidades permitidas de Proguard.
resourcejar

List of labels; optional

Etiqueta del ejecutable del compilador de archivos jar de recursos.
singlejar

List of labels; required

Etiqueta del jar de implementación de SingleJar.
source_version

String; optional

La versión de origen de Java (p.ej., "6" o "7"). Especifica qué conjunto de estructuras de código se permiten en el código fuente de Java.
target_version

String; optional

La versión de destino de Java (p.ej., "6" o "7"). Especifica para qué entorno de ejecución de Java debe compilarse la clase.
timezone_data

Label; optional

Etiqueta de un archivo jar de recursos que contiene datos de zonas horarias. Si se configura, los datos de zona horaria se agregan como una dependencia implícita del entorno de ejecución de todas las reglas java_binary.
tools

List of labels; optional

Etiquetas de herramientas disponibles para la expansión de etiquetas en jvm_opts.
turbine_data

List of labels; optional

Etiquetas de datos disponibles para la expansión de etiquetas en turbine_jvm_opts.
turbine_jvm_opts

List of strings; optional

Es la lista de argumentos para la JVM cuando se invoca la turbina.
xlint

List of strings; optional

La lista de advertencias para agregar o quitar de la lista predeterminada. Lo antepone un guion para quitarlo. Para obtener más información, consulta la documentación de Javac sobre las opciones -Xlint.