| Атрибуты |
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 Список файлов данных для включения в Java jar. Если ресурсы указаны, они будут включены в 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 variable" и разбору в оболочке Bourne. Эти параметры компилятора передаются в 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. Другие опции могут появляться только в проguard_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" variable. Если этот путь является абсолютным, правило обозначает негерметичную 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",
)