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