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 la fuente 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), además de un wrapper de secuencia de comandos de shell con el mismo nombre que la regla.
  La secuencia de comandos de shell del wrapper usa una ruta de acceso de clase que incluye, entre otras cosas, un archivo .jar para cada biblioteca de la que depende el archivo binario. Cuando se ejecuta la secuencia de comandos de shell del wrapper, cualquier variable de entorno JAVABIN no vacía tendrá prioridad sobre la versión especificada a través de la marca --java_runtime_version de Bazel.
  La secuencia de comandos de wrapper acepta varias marcas únicas. Consulta //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt para obtener una lista de las marcas y las variables de entorno configurables que acepta el wrapper.
Objetivos de salida implícitos
- name.jar: Es un archivo Java que contiene los archivos de clase y otros recursos correspondientes a las dependencias directas del archivo binario.
- name-src.jar: Es un archivo que contiene las fuentes ("source jar").
- name_deploy.jar: Es un archivo Java apto para la implementación (solo se compila si se solicita explícitamente).- Compilar el destino - <name>_deploy.jarpara tu regla crea un archivo .jar autónomo con un manifiesto que permite ejecutarlo con el comando- java -jaro con la opción- --singlejardel script de wrapper. Se prefiere usar la secuencia de comandos de wrapper en lugar de- java -jarporque también pasa las marcas de JVM y las opciones para cargar bibliotecas nativas.- El JAR de implementación contiene todas las clases que encontraría un cargador de clases que buscara en la ruta de clase del wrapper de la secuencia de comandos binaria de principio a fin. También contiene las bibliotecas nativas necesarias para las dependencias. Estos se cargan automáticamente en la JVM durante el tiempo de ejecución. - Si tu destino especifica un atributo launcher, en lugar de ser un archivo JAR normal, el archivo _deploy.jar será un archivo binario nativo. Contendrá el selector más cualquier dependencia nativa (C++) de tu regla, todo vinculado en un objeto binario estático. Los bytes del archivo .jar real se agregarán a ese archivo binario nativo, lo que creará un solo BLOB binario que contendrá el código ejecutable y el código Java. Puedes ejecutar el archivo .jar resultante directamente, como lo harías con cualquier objeto binario nativo. 
- name_deploy-src.jar: Es un archivo que contiene las fuentes recopiladas del cierre transitivo del destino. Coincidirán con las clases en- deploy.jar, excepto cuando los archivos .jar no tengan un archivo .jar de origen coincidente.
  No se permite un atributo deps en una regla java_binary sin srcs. Dicha regla requiere un main_class proporcionado por runtime_deps.
En el siguiente fragmento de código, se ilustra un error común:
java_binary(
    name = "DontDoThis",
    srcs = [
        ...,
        "GeneratedJavaFile.java",  # a generated .java file
    ],
    deps = [":generating_rule",],  # rule that generates that file
)
En su lugar, haz lo siguiente:
java_binary(
    name = "DoThisInstead",
    srcs = [
        ...,
        ":generating_rule",
    ],
)
Argumentos
| Atributos | |
|---|---|
| name | Nombre: Obligatorio Es un nombre único para este destino. Se recomienda usar el nombre del archivo fuente que es el punto de entrada principal de la aplicación (sin la extensión). Por ejemplo, si tu punto de entrada se llama Main.java, tu nombre podría serMain. | 
| deps | Lista de etiquetas. El valor predeterminado es  depsen Atributos típicos definidos por la mayoría de las reglas de compilación. | 
| srcs | Lista de etiquetas. El valor predeterminado es  
            Se compilan los archivos fuente de tipo  
            Los archivos fuente de tipo  
            Reglas: Si la regla (por lo general,  
            Este argumento casi siempre es obligatorio, excepto si un atributo  | 
| resources | Lista de etiquetas. El valor predeterminado es  
            Si se especifican recursos, se incluirán en el archivo .jar junto con los archivos  Los recursos pueden ser archivos fuente o archivos generados. | 
| classpath_resources | Lista de etiquetas. El valor predeterminado es  
            Es una lista de recursos que deben ubicarse en la raíz del árbol de Java. El único propósito de este atributo es admitir bibliotecas de terceros que requieren que sus recursos se encuentren en la ruta de clase exactamente como  | 
| create_executable | Booleano; no se puede configurar; el valor predeterminado es  java_single_jaren su lugar. | 
| deploy_env | Lista de etiquetas. El valor predeterminado es  java_binaryque representan el entorno de implementación de este archivo binario.
        Establece este atributo cuando compiles un complemento que cargará otrojava_binary.Si se configura este atributo, se excluyen todas las dependencias de la ruta de acceso de clase del tiempo de ejecución (y el archivo JAR de implementación) de este binario que se comparten entre este binario y los destinos especificados en deploy_env. | 
| deploy_manifest_lines | Lista de cadenas; el valor predeterminado es  META-INF/manifest.mfgenerado para el destino*_deploy.jar. El contenido de este atributo no está sujeto a la sustitución de "Crear variable". | 
| javacopts | Lista de cadenas; el valor predeterminado es  Estas opciones del compilador se pasan a javac después de las opciones globales del compilador. | 
| jvm_flags | Lista de cadenas; el valor predeterminado es  La secuencia de comandos de wrapper para un archivo binario de Java incluye una definición de CLASSPATH (para encontrar todos los archivos JAR dependientes) y llama al intérprete de Java correcto.
          La línea de comandos que genera la secuencia de comandos de 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/javanormal incluido en el JDK.
          El destino debe ser uncc_binary. Se puede especificar cualquiercc_binaryque implemente la 
          API de invocación de Java como valor para este atributo.De forma predeterminada, Bazel usará el selector de JDK normal (bin/java o java.exe). La marca de Bazel  Ten en cuenta que tus dependencias nativas (C++, SWIG, JNI) se compilarán de manera diferente según si usas el selector de JDK o algún otro selector: 
 Cuando se usa un selector que no sea el predeterminado del JDK, cambia el formato de la salida de  | 
| main_class | Cadena. El valor predeterminado es  main()que se usará como punto de entrada.
          Si una regla usa esta opción, no necesita una lista desrcs=[...].
          Por lo tanto, con este atributo, se puede crear un ejecutable a partir de una biblioteca de Java que ya contenga uno o más métodosmain().
            El valor de este atributo es un nombre de clase, no un archivo fuente. La clase debe estar disponible en el tiempo de ejecución: esta regla la puede compilar (desde  | 
| plugins | Lista de etiquetas. El valor predeterminado es  java_pluginespecificado en este atributo se ejecutará cada vez que se compile esta regla. Una biblioteca también puede heredar complementos de dependencias que usanexported_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 cada archivo del atributo  | 
| runtime_deps | Lista de etiquetas. El valor predeterminado es  depscomunes, estos aparecerán en la ruta de clase de tiempo de ejecución, pero, a diferencia de ellos, no en la ruta de clase de tiempo de compilación. Aquí se deben enumerar las dependencias que solo se necesitan en el tiempo de ejecución. Las herramientas de análisis de dependencias deben ignorar los destinos que aparecen enruntime_depsydeps. | 
| stamp | Número entero; el valor predeterminado es  
 Los archivos binarios con marca de tiempo no se vuelven a compilar, a menos que cambien sus dependencias. | 
| use_launcher | Booleano; el valor predeterminado es  Si este atributo se establece en falso, se ignorarán el atributo launcher y la marca  | 
| use_testrunner | Booleano; el valor predeterminado es  com.google.testing.junit.runner.BazelTestRunner) como el punto de entrada principal para un programa de Java y proporciona la clase de prueba al ejecutor de pruebas como un valor de la propiedad del sistemabazel.test_suite.
          Puedes usarlo para anular el comportamiento predeterminado, que es usar el ejecutor de pruebas para las reglasjava_testy no usarlo para las reglasjava_binary.  Es poco probable que quieras hacer esto.  Un uso es para las reglas deAllTestque invoca otra regla (para configurar una base de datos
          antes de ejecutar las pruebas, por ejemplo).  La reglaAllTestdebe declararse comojava_binary, pero debe seguir usando el ejecutor de pruebas como su punto de entrada principal.
          El nombre de una clase de ejecutor de pruebas se puede anular con el atributomain_class. | 
java_import
Ver la fuente de la reglajava_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 las reglas java_library y java_binary.
Ejemplos
    java_import(
        name = "maven_model",
        jars = [
            "maven_model/maven-aether-provider-3.2.3.jar",
            "maven_model/maven-model-3.2.3.jar",
            "maven_model/maven-model-builder-3.2.3.jar",
        ],
    )
Argumentos
| Atributos | |
|---|---|
| name | Nombre: Obligatorio Es un nombre único para este destino. | 
| deps | Lista de etiquetas. El valor predeterminado es  | 
| constraints | Lista de cadenas; no configurable; el valor predeterminado es  | 
| exports | Lista de etiquetas. El valor predeterminado es  | 
| jars | Lista de etiquetas; obligatoriaEs la lista de archivos JAR proporcionados a los destinos de Java que dependen de este destino. | 
| neverlink | Booleano; el valor predeterminado es  tools.jarpara cualquier elemento que se ejecute en un JDK estándar. | 
| proguard_specs | Lista de etiquetas. El valor predeterminado es  android_binaryque dependa de esta biblioteca.
        Los archivos incluidos aquí solo deben tener reglas idempotentes, es decir, -dontnote, -dontwarn, assumenosideeffects y reglas que comiencen con -keep. Las demás opciones solo pueden aparecer en los proguard_specs deandroid_binarypara garantizar que las combinaciones no sean tautológicas. | 
| runtime_deps | Lista de etiquetas. El valor predeterminado es  | 
| srcjar | Etiqueta: El valor predeterminado es  | 
java_library
Ver la fuente de la reglajava_library(name, deps, srcs, data, resources, 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 Java que contiene los archivos de clase.
- libname-src.jar: Es un archivo que contiene las fuentes ("source jar").
Argumentos
| Atributos | |
|---|---|
| name | Nombre: Obligatorio Es un nombre único para este destino. | 
| deps | Lista de etiquetas. El valor predeterminado es  depsen Atributos típicos definidos por la mayoría de las reglas de compilación.
          Los archivos .jar creados por las reglas de  
          En cambio, los destinos del atributo  | 
| srcs | Lista de etiquetas. El valor predeterminado es  
            Se compilan los archivos fuente de tipo  
            Los archivos fuente de tipo  
            Reglas: Si la regla (por lo general,  
            Este argumento casi siempre es obligatorio, excepto si un atributo  | 
| data | Lista de etiquetas. El valor predeterminado es  dataen Atributos típicos definidos por la mayoría de las reglas de compilación.
          Cuando compila un  | 
| resources | Lista de etiquetas. El valor predeterminado es  
            Si se especifican recursos, se incluirán en el archivo .jar junto con los archivos  Los recursos pueden ser archivos fuente o archivos generados. | 
| exported_plugins | Lista de etiquetas. El valor predeterminado es  java_plugins (p.ej., procesadores de anotaciones) que se exportarán a las bibliotecas que dependen directamente de esta biblioteca.
          La lista especificada de  | 
| exports | Lista de etiquetas. El valor predeterminado es  
          Si se enumeran las reglas aquí, estarán disponibles para las reglas principales, como si las reglas principales dependieran explícitamente de estas reglas. Esto no es cierto para los  
          Resumen: Una regla X puede acceder al código en Y si existe una ruta de dependencia entre ellas que comienza con una arista  
          Supongamos que A depende de B y B depende de C. En este caso, C es una dependencia transitiva de A, por lo que cambiar las fuentes de C y volver a compilar A volverá a compilar todo correctamente. Sin embargo, A no podrá usar clases en C. Para permitirlo, A debe declarar C en su  El cierre de las bibliotecas exportadas está disponible para todas las reglas principales directas. 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. Ahora, si C y D exportaran algunas bibliotecas, C' y D' respectivamente, A solo podría acceder a C', pero no a D'. 
          Importante: Una regla exportada no es una dependencia normal. Si seguimos con el ejemplo anterior, si B exporta C y también quiere usar C, también debe incluirlo en su propio  | 
| javacopts | Lista de cadenas; el valor predeterminado es  Estas opciones del compilador se pasan a javac después de las opciones globales del compilador. | 
| neverlink | Booleano; el valor predeterminado es  tools.jarpara cualquier elemento que se ejecute en un JDK estándar.
          Ten en cuenta que  Si la biblioteca de tiempo de ejecución difiere de la biblioteca de compilación, debes asegurarte de que solo difiera en los lugares en los que el JLS prohíbe a los compiladores insertar código en línea (y eso debe cumplirse para todas las versiones futuras del JLS). | 
| plugins | Lista de etiquetas. El valor predeterminado es  java_pluginespecificado en este atributo se ejecutará cada vez que se compile esta regla. Una biblioteca también puede heredar complementos de dependencias que usanexported_plugins. Los recursos generados por el complemento se incluirán en el archivo .jar resultante de esta regla. | 
| proguard_specs | Lista de etiquetas. El valor predeterminado es  android_binaryque dependa de esta biblioteca.
        Los archivos incluidos aquí solo deben tener reglas idempotentes, es decir, -dontnote, -dontwarn, assumenosideeffects y reglas que comiencen con -keep. Las demás opciones solo pueden aparecer en los proguard_specs deandroid_binarypara garantizar que las combinaciones no sean tautológicas. | 
| 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 cada archivo del atributo  | 
| runtime_deps | Lista de etiquetas. El valor predeterminado es  depscomunes, estos aparecerán en la ruta de clase de tiempo de ejecución, pero, a diferencia de ellos, no en la ruta de clase de tiempo de compilación. Aquí se deben enumerar las dependencias que solo se necesitan en el tiempo de ejecución. Las herramientas de análisis de dependencias deben ignorar los destinos que aparecen enruntime_depsydeps. | 
java_lite_proto_library
Ver la fuente de la reglajava_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 las 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 | Nombre: Obligatorio Es un nombre único para este destino. | 
| deps | Lista de etiquetas. El valor predeterminado es  proto_librarypara las que se generará código Java. | 
java_proto_library
Ver la fuente de la reglajava_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 las 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 | Nombre: Obligatorio Es un nombre único para este destino. | 
| deps | Lista de etiquetas. El valor predeterminado es  proto_librarypara las que se generará código Java. | 
java_test
Ver la fuente de la reglajava_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 el método principal del ejecutor de pruebas en lugar de compilar la clase principal.
Objetivos de salida implícitos
- name.jar: Es un archivo Java.
- name_deploy.jar: Es un archivo de Java adecuado para la implementación. (Solo se compila si se solicita de forma explícita). Consulta la descripción del resultado- name_deploy.jarde java_binary para obtener más detalles.
Consulta la sección sobre los argumentos de java_binary(). Esta regla también admite todos los atributos comunes a todas las reglas de prueba (*_test).
Ejemplos
java_library(
    name = "tests",
    srcs = glob(["*.java"]),
    deps = [
        "//java/com/foo/base:testResources",
        "//java/com/foo/testing/util",
    ],
)
java_test(
    name = "AllTests",
    size = "small",
    runtime_deps = [
        ":tests",
        "//util/mysql",
    ],
)
Argumentos
| Atributos | |
|---|---|
| name | Nombre: Obligatorio Es un nombre único para este destino. | 
| deps | Lista de etiquetas. El valor predeterminado es  depsen Atributos típicos definidos por la mayoría de las reglas de compilación. | 
| srcs | Lista de etiquetas. El valor predeterminado es  
            Se compilan los archivos fuente de tipo  
            Los archivos fuente de tipo  
            Reglas: Si la regla (por lo general,  
            Este argumento casi siempre es obligatorio, excepto si un atributo  | 
| resources | Lista de etiquetas. El valor predeterminado es  
            Si se especifican recursos, se incluirán en el archivo .jar junto con los archivos  Los recursos pueden ser archivos fuente o archivos generados. | 
| classpath_resources | Lista de etiquetas. El valor predeterminado es  
            Es una lista de recursos que deben ubicarse en la raíz del árbol de Java. El único propósito de este atributo es admitir bibliotecas de terceros que requieren que sus recursos se encuentren en la ruta de clase exactamente como  | 
| create_executable | Booleano; no se puede configurar; el valor predeterminado es  java_single_jaren su lugar. | 
| deploy_manifest_lines | Lista de cadenas; el valor predeterminado es  META-INF/manifest.mfgenerado para el destino*_deploy.jar. El contenido de este atributo no está sujeto a la sustitución de "Crear variable". | 
| javacopts | Lista de cadenas; el valor predeterminado es  Estas opciones del compilador se pasan a javac después de las opciones globales del compilador. | 
| jvm_flags | Lista de cadenas; el valor predeterminado es  La secuencia de comandos de wrapper para un archivo binario de Java incluye una definición de CLASSPATH (para encontrar todos los archivos JAR dependientes) y llama al intérprete de Java correcto.
          La línea de comandos que genera la secuencia de comandos de 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/javanormal incluido en el JDK.
          El destino debe ser uncc_binary. Se puede especificar cualquiercc_binaryque implemente la 
          API de invocación de Java como valor para este atributo.De forma predeterminada, Bazel usará el selector de JDK normal (bin/java o java.exe). La marca de Bazel  Ten en cuenta que tus dependencias nativas (C++, SWIG, JNI) se compilarán de manera diferente según si usas el selector de JDK o algún otro selector: 
 Cuando se usa un selector que no sea el predeterminado del JDK, cambia el formato de la salida de  | 
| main_class | Cadena. El valor predeterminado es  main()que se usará como punto de entrada.
          Si una regla usa esta opción, no necesita una lista desrcs=[...].
          Por lo tanto, con este atributo, se puede crear un ejecutable a partir de una biblioteca de Java que ya contenga uno o más métodosmain().
            El valor de este atributo es un nombre de clase, no un archivo fuente. La clase debe estar disponible en el tiempo de ejecución: esta regla la puede compilar (desde  | 
| plugins | Lista de etiquetas. El valor predeterminado es  java_pluginespecificado en este atributo se ejecutará cada vez que se compile esta regla. Una biblioteca también puede heredar complementos de dependencias que usanexported_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 cada archivo del atributo  | 
| runtime_deps | Lista de etiquetas. El valor predeterminado es  depscomunes, estos aparecerán en la ruta de clase de tiempo de ejecución, pero, a diferencia de ellos, no en la ruta de clase de tiempo de compilación. Aquí se deben enumerar las dependencias que solo se necesitan en el tiempo de ejecución. Las herramientas de análisis de dependencias deben ignorar los destinos que aparecen enruntime_depsydeps. | 
| stamp | Número entero; el valor predeterminado es  
 Los archivos binarios con marca de tiempo no se vuelven a compilar, a menos que cambien sus dependencias. | 
| test_class | Cadena. El valor predeterminado es  
          De forma predeterminada, si no se define este argumento, se usa el modo heredado y, en su lugar, se usan los argumentos de prueba. Establece la marca  
          Este atributo especifica el nombre de una clase Java que ejecutará esta prueba. Es raro que debas configurar este parámetro. Si se omite este argumento, se inferirá con el  
          En JUnit3, la clase de prueba debe ser una subclase de  
          Este atributo permite que varias reglas de  | 
| use_launcher | Booleano; el valor predeterminado es  Si este atributo se establece en falso, se ignorarán el atributo launcher y la marca  | 
| use_testrunner | Booleano; el valor predeterminado es  com.google.testing.junit.runner.BazelTestRunner) como el punto de entrada principal para un programa de Java y proporciona la clase de prueba al ejecutor de pruebas como un valor de la propiedad del sistemabazel.test_suite.
          Puedes usarlo para anular el comportamiento predeterminado, que es usar el ejecutor de pruebas para las reglasjava_testy no usarlo para las reglasjava_binary.  Es poco probable que quieras hacer esto.  Un uso es para las reglas deAllTestque invoca otra regla (para configurar una base de datos
          antes de ejecutar las pruebas, por ejemplo).  La reglaAllTestdebe declararse comojava_binary, pero debe seguir usando el ejecutor de pruebas como su punto de entrada principal.
          El nombre de una clase de ejecutor de pruebas se puede anular con el atributomain_class. | 
java_package_configuration
Ver la fuente de la reglajava_package_configuration(name, data, compatible_with, deprecation, distribs, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, visibility)
Es la configuración que se aplicará a un conjunto de paquetes.
Se pueden agregar configuraciones a los java_toolchain.javacopts.
Ejemplo:
java_package_configuration(
    name = "my_configuration",
    packages = [":my_packages"],
    javacopts = ["-Werror"],
)
package_group(
    name = "my_packages",
    packages = [
        "//com/my/project/...",
        "-//com/my/project/testing/...",
    ],
)
java_toolchain(
    ...,
    package_configuration = [
        ":my_configuration",
    ]
)
Argumentos
| Atributos | |
|---|---|
| name | Nombre: Obligatorio Es un nombre único para este destino. | 
| data | Lista de etiquetas. El valor predeterminado es  | 
| javacopts | Lista de cadenas; el valor predeterminado es  | 
| packages | Lista de etiquetas. El valor predeterminado es  package_groups al que se debe aplicar la configuración. | 
java_plugin
Ver la fuente de la reglajava_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 complementos para el compilador de Java que ejecuta Bazel. Por el momento, el único tipo de complementos admitido son los procesadores de anotaciones. Una regla java_library o java_binary puede ejecutar complementos si depende de ellos a través del atributo plugins. Un java_library también puede exportar automáticamente complementos a bibliotecas que dependen directamente de él con exported_plugins.
Objetivos de salida implícitos
- libname.jar: Es un archivo Java.
  Los argumentos son idénticos a java_library, excepto por la adición del argumento processor_class.
Argumentos
| Atributos | |
|---|---|
| name | Nombre: Obligatorio Es un nombre único para este destino. | 
| deps | Lista de etiquetas. El valor predeterminado es  depsen Atributos típicos definidos por la mayoría de las reglas de compilación.
          Los archivos .jar creados por las reglas de  
          En cambio, los destinos del atributo  | 
| srcs | Lista de etiquetas. El valor predeterminado es  
            Se compilan los archivos fuente de tipo  
            Los archivos fuente de tipo  
            Reglas: Si la regla (por lo general,  
            Este argumento casi siempre es obligatorio, excepto si un atributo  | 
| data | Lista de etiquetas. El valor predeterminado es  dataen Atributos típicos definidos por la mayoría de las reglas de compilación.
          Cuando compila un  | 
| resources | Lista de etiquetas. El valor predeterminado es  
            Si se especifican recursos, se incluirán en el archivo .jar junto con los archivos  Los recursos pueden ser archivos fuente o archivos generados. | 
| generates_api | Booleano; el valor predeterminado es  Si una regla usa un procesador de anotaciones que genera una API, otras reglas que dependen de ella solo pueden hacer referencia al código generado si sus acciones de compilación se programan después de la regla de generación. Este atributo indica a Bazel que introduzca restricciones de programación cuando se habilita --java_header_compilation. ADVERTENCIA: Este atributo afecta el rendimiento de la compilación. Úsalo solo si es necesario. | 
| javacopts | Lista de cadenas; el valor predeterminado es  Estas opciones del compilador se pasan a javac después de las opciones globales del compilador. | 
| neverlink | Booleano; el valor predeterminado es  tools.jarpara cualquier elemento que se ejecute en un JDK estándar.
          Ten en cuenta que  Si la biblioteca de tiempo de ejecución difiere de la biblioteca de compilación, debes asegurarte de que solo difiera en los lugares en los que el JLS prohíbe a los compiladores insertar código en línea (y eso debe cumplirse para todas las versiones futuras del JLS). | 
| output_licenses | Tipo de licencia; el valor predeterminado es  common attributes
         | 
| plugins | Lista de etiquetas. El valor predeterminado es  java_pluginespecificado en este atributo se ejecutará cada vez que se compile esta regla. Una biblioteca también puede heredar complementos de dependencias que usanexported_plugins. Los recursos generados por 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_binaryque dependa de esta biblioteca.
        Los archivos incluidos aquí solo deben tener reglas idempotentes, es decir, -dontnote, -dontwarn, assumenosideeffects y reglas que comiencen con -keep. Las demás opciones solo pueden aparecer en los proguard_specs deandroid_binarypara garantizar que las combinaciones no sean tautológicas. | 
| 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 cada archivo del atributo  | 
java_runtime
Ver la fuente de la reglajava_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_ct_sym, 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 | Nombre: Obligatorio Es un nombre único para este destino. | 
| srcs | Lista de etiquetas. El valor predeterminado es  | 
| default_cds | Etiqueta: El valor predeterminado es  java_runtimehermético. Cuando se habilita el modo hermético para un destinojava_binaryy si el destino no proporciona su propio archivo CDS especificando el atributoclasslist, el CDS predeterminadojava_runtimese empaqueta en el archivo JAR de implementación hermética. | 
| hermetic_srcs | Lista de etiquetas. El valor predeterminado es  | 
| java | Etiqueta: El valor predeterminado es  | 
| java_home | Cadena. El valor predeterminado es  srcsyjavadeben estar vacíos. | 
| lib_ct_sym | Etiqueta: El valor predeterminado es  --release. Si no se especifica y hay exactamente un archivo ensrcscuya ruta de acceso termina en/lib/ct.sym, se usa ese archivo. | 
| lib_modules | Etiqueta: El valor predeterminado es  | 
| version | Número entero; el valor predeterminado es  Runtime.version().feature(). | 
java_toolchain
Ver la fuente de la reglajava_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_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_worker_multiplex_sandboxing, javac_supports_workers, javacopts, jvm_opts, licenses, oneversion, oneversion_allowlist_for_tests, 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 con el argumento --java_toolchain. Por lo general, no deberías escribir ese tipo de reglas, a menos que quieras ajustar tu compilador de Java.
Ejemplos
Un ejemplo simple sería el siguiente:
java_toolchain(
    name = "toolchain",
    source_version = "7",
    target_version = "7",
    bootclasspath = ["//tools/jdk:bootclasspath"],
    xlint = [ "classfile", "divzero", "empty", "options", "path" ],
    javacopts = [ "-g" ],
    javabuilder = ":JavaBuilder_deploy.jar",
)
Argumentos
| Atributos | |
|---|---|
| name | Nombre: Obligatorio Es un nombre único para este destino. | 
| android_lint_data | Lista de etiquetas. El valor predeterminado es  | 
| android_lint_jvm_opts | Lista de cadenas; el valor predeterminado es  | 
| android_lint_opts | Lista de cadenas; el valor predeterminado es  | 
| android_lint_package_configuration | Lista de etiquetas. El valor predeterminado es  | 
| android_lint_runner | Etiqueta: El valor predeterminado es  | 
| bootclasspath | Lista de etiquetas. El valor predeterminado es  | 
| deps_checker | Lista de etiquetas. El valor predeterminado es  | 
| forcibly_disable_header_compilation | Booleano; el valor predeterminado es  | 
| genclass | Lista de etiquetas; obligatoriaEs la etiqueta del archivo .jar de implementación de GenClass. | 
| header_compiler | Lista de etiquetas. El valor predeterminado es  | 
| header_compiler_direct | Lista de etiquetas. El valor predeterminado es  Esta herramienta no admite el procesamiento de anotaciones. | 
| ijar | Lista de etiquetas; obligatoriaEs la etiqueta del ejecutable de ijar. | 
| jacocorunner | Etiqueta: El valor predeterminado es  | 
| java_runtime | Label: ObligatoriaEs 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 | Lista de etiquetas; obligatoriaEs la etiqueta del JAR de implementación de JavaBuilder. | 
| 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_multiplex_sandboxing | Booleano; el valor predeterminado es  | 
| javac_supports_workers | Booleano; el valor predeterminado es  | 
| javacopts | Lista de cadenas; el valor predeterminado es  | 
| jvm_opts | 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  | 
| resourcejar | Lista de etiquetas. El valor predeterminado es  | 
| singlejar | Lista de etiquetas; obligatoriaEs la etiqueta del archivo JAR de implementación de SingleJar. | 
| 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  |