| Атрибуты |
name | Name; required Уникальное имя для этой цели. |
deps | List of labels; optional Список библиотек для связывания в эту библиотеку. См. общие комментарии об deps в Типичные атрибуты, определяемые большинством правил сборки. Jar-файлы, созданные правилами java_library, перечисленными в deps, будут находиться в пути к классам времени компиляции этого правила. Кроме того, транзитивное замыкание их deps, runtime_deps и exports будет в пути к классам времени выполнения. В отличие от этого, цели в атрибуте data включаются в runfiles, но не в путь к классам времени компиляции и времени выполнения. |
srcs | List of labels; optional Список исходных файлов, которые обрабатываются для создания цели. Этот атрибут почти всегда требуется; см. исключения ниже. Исходные файлы типа .java компилируются. В случае сгенерированных .java файлов, обычно рекомендуется указать здесь имя правила генерации вместо имени файла. Это не только улучшает читабельность, но и делает правило более устойчивым к будущим изменениям: если правило генерации будет генерировать разные файлы в будущем, вам нужно исправить только одно место: outs правила генерации. Вы не должны указывать правило генерации в deps, так как это бесполезно. Исходные файлы типа .srcjar распаковываются и компилируются. (Это полезно, если вам нужно сгенерировать набор .java файлов с помощью genrule.) Правила: если правило (обычно genrule или filegroup) генерирует любой из перечисленных выше файлов, они будут использоваться так же, как описано для исходных файлов. Этот аргумент почти всегда требуется, за исключением случаев, когда атрибут main_class указывает класс в пути к классам времени выполнения или вы указываете аргумент runtime_deps. |
data | List of labels; optional Список файлов, необходимых этой библиотеке во время выполнения. См. общие комментарии об data в Типичные атрибуты, определяемые большинством правил сборки. При построении java_library, Bazel не помещает эти файлы никуда; если файлы data являются сгенерированными, Bazel их генерирует. При построении теста, который зависит от этой java_library, Bazel копирует или связывает файлы data в область runfiles. |
resources | List of labels; optional Список файлов данных для включения в jar-файл Java. Если ресурсы указаны, они будут включены в jar вместе с обычными файлами .class , созданными в результате компиляции. Расположение ресурсов внутри jar определяется структурой проекта. Bazel сначала ищет стандартную структуру Maven стандартной структуры директорий (директория "src", за которой следует вложенная директория "resources"). Если это не найдено, Bazel ищет самую верхнюю директорию с именем "java" или "javatests" (например, если ресурс находится в <workspace root>/x/java/y/java/z, путь к ресурсу будет y/java/z. Этот эвристический метод нельзя переопределить, однако, атрибут resource_strip_prefix можно использовать для указания альтернативной директории для файлов ресурсов). Ресурсы могут быть исходными или сгенерированными файлами. |
generates_api | Boolean; optional; default is False Этот атрибут отмечает обработчики аннотаций, которые генерируют код API. Если правило использует обработчик аннотаций, генерирующий API, другие правила, зависящие от него, могут ссылаться на сгенерированный код только в том случае, если их действия компиляции запланированы после правила генерации. Этот атрибут инструктирует Bazel ввести ограничения по планированию при включенном --java_header_compilation. ПРЕДУПРЕЖДЕНИЕ: Этот атрибут влияет на производительность сборки, используйте его только при необходимости. |
javacopts | List of strings; optional Дополнительные параметры компилятора для этой библиотеки. Подвергаются подстановке "Переменные Make" и разбору Bourne shell. Эти параметры компилятора передаются javac после глобальных параметров компилятора. |
neverlink | Boolean; optional; default is False Нужно ли использовать эту библиотеку только для компиляции, а не во время выполнения. Полезно, если библиотека будет предоставлена средой выполнения во время выполнения. Примерами таких библиотек являются API IDE для плагинов IDE или tools.jar для всего, что работает на стандартной JDK. Обратите внимание, что neverlink = 1 не предотвращает компилятор от внедрения материала из этой библиотеки в цели компиляции, которые зависят от нее, как разрешено спецификацией языка Java (например, static final константы String или примитивных типов). Поэтому предпочтительный вариант использования - когда библиотека времени выполнения идентична библиотеке компиляции. Если библиотека времени выполнения отличается от библиотеки компиляции, то вы должны убедиться, что они отличаются только в местах, которые JLS запрещает компиляторам встраивать (и что должно выполняться для всех будущих версий JLS). |
output_licenses | Licence type; optional См. common attributes
|
plugins | List of labels; optional Плагины компилятора Java для запуска во время компиляции. Каждый java_plugin , указанный в этом атрибуте, будет выполняться каждый раз, когда это правило строится. Библиотека также может унаследовать плагины от зависимостей, использующих exported_plugins. Ресурсы, сгенерированные плагином, будут включены в результирующий jar этого правила. |
processor_class | String; optional Класс процессора — это полное квалифицированное имя класса, который компилятор Java должен использовать в качестве точки входа для обработчика аннотаций. Если не указано, это правило не внесёт обработчик аннотаций в обработку аннотаций компилятора Java, но его путь к классам времени выполнения по-прежнему будет включён в путь к обработчикам аннотаций компилятора. (Это в первую очередь предназначено для использования плагинами Error Prone, которые загружаются из пути обработчика аннотаций с использованием java.util.ServiceLoader.) |
proguard_specs | List of labels; optional Файлы, которые будут использоваться в качестве спецификаций Proguard. Они опишут набор спецификаций, которые будут использоваться Proguard. Если указаны, они будут добавлены к любой цели android_binary , зависящей от этой библиотеки. Включаемые здесь файлы должны содержать только идемпотентные правила, а именно -dontnote, -dontwarn, assumenosideeffects и правила, начинающиеся с -keep. Другие параметры могут появляться только в proguard_specs android_binary, чтобы обеспечить нетавтологические слияния. |
resource_jars | List of labels; optional Устарело: используйте java_import и deps или runtime_deps вместо этого. |
resource_strip_prefix | String; optional Префикс пути для удаления из Java-ресурсов. Если указан, этот префикс пути удаляется из каждого файла в атрибуте resources. Ошибка, если файл ресурса не находится в этой директории. Если не указан (по умолчанию), путь к файлу ресурса определяется в соответствии с той же логикой, что и пакет Java исходных файлов. Например, исходный файл в stuff/java/foo/bar/a.txt будет находиться в foo/bar/a.txt. |
java_runtime
java_runtime(name, srcs, compatible_with, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_modules, licenses, restricted_to, tags, target_compatible_with, testonly, version, visibility)
Указывает конфигурацию для Java-среды выполнения.
Пример:
java_runtime(
name = "jdk-9-ea+153",
srcs = glob(["jdk9-ea+153/**"]),
java_home = "jdk9-ea+153",
)
Аргументы
| Атрибуты |
name | Name; required Уникальное имя для этой цели. |
srcs | List of labels; optional Все файлы в среде выполнения. |
hermetic_srcs | List of labels; optional Файлы в среде выполнения, необходимые для герметичных развертываний. |
java | Label; optional Путь к исполняемому файлу java. |
java_home | String; optional Путь к корню среды выполнения. Подлежит подстановке "Переменных make". Если этот путь абсолютный, правило обозначает негерметичную Java-среду выполнения с известным путём. В этом случае атрибуты srcs и java должны быть пустыми. |
lib_modules | Label; optional Файл lib/modules, необходимый для герметичных развертываний. |
version | Integer; optional; default is 0 Версия функции Java-среды выполнения. То есть целое число, возвращаемое Runtime.version().feature(). |
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)
Указывает конфигурацию компилятора Java. Используемый компилятор можно изменить с помощью аргумента --java_toolchain. Обычно вы не должны создавать подобные правила, если не хотите настраивать свой компилятор Java.
Примеры
Простой пример:
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",
)