| Атрибуты |
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. Эти параметры компилятора передаются в 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, 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, необходимый для герметичных развертываний. |
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",
)