| Атрибуты |
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 Дополнительные параметры компилятора для этой библиотеки. Подвержены замене переменных «Сделать переменную» и разбору 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 Путь к корню среды выполнения. Подвергается замене переменной «Сделать переменную». Если этот путь абсолютный, правило обозначает негерметичную среду выполнения 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",
)