Spec-Zone.ru › Bazel 6.1

Правила Java

Правила

  • java_binary
  • java_import
  • java_library
  • java_lite_proto_library
  • java_proto_library
  • java_test
  • java_package_configuration
  • java_plugin
  • java_runtime
  • java_toolchain

java_binary

java_binary(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, output_licenses, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)

Создаёт Java архив ("jar-файл"), а также скрипт оболочки с тем же именем, что и правило. Скрипт оболочки использует путь к классам, включающий, среди прочего, jar-файлы для каждой библиотеки, от которой зависит бинарник.

Скрипт оболочки принимает несколько уникальных флагов. Обратитесь к //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt за списком настраиваемых флагов и переменных среды, принимаемых оболочкой.

Неявные целевые файлы вывода

  • name.jar: Java архив, содержащий файлы классов и другие ресурсы, соответствующие прямым зависимостям бинарника.
  • name-src.jar: Архив, содержащий исходные коды ("исходный jar").
  • name_deploy.jar: Java архив, подходящий для развертывания (создаётся только при явном запросе).

    Создание целевого файла <name>_deploy.jar для вашего правила создаёт самодостаточный jar-файл с манифестом, позволяющим запустить его с помощью команды java -jar или с помощью опции скрипта оболочки --singlejar. Использование скрипта оболочки предпочтительнее java -jar, так как оно также передаёт флаги JVM и опции для загрузки нативных библиотек.

    Jar-файл для развертывания содержит все классы, которые были бы найдены загрузчиком классов, который искал бы в пути к классам из скрипта оболочки бинарника от начала до конца. Он также содержит необходимые нативные библиотеки для зависимостей. Эти библиотеки автоматически загружаются в JVM во время выполнения.

    Если ваш целевой файл указывает атрибут launcher, то вместо обычного JAR-файла _deploy.jar будет являться нативным бинарником. Он будет содержать загрузчик плюс любые нативные (C++) зависимости вашего правила, все объединённые в статический бинарник. Байты фактического jar-файла будут добавлены к этому нативному бинарнику, создавая единый бинарный блок, содержащий как исполняемый файл, так и Java-код. Вы можете напрямую выполнить полученный jar-файл так же, как вы выполняли бы любой нативный бинарник.

  • name_deploy-src.jar: Архив, содержащий исходные коды, собранные из транзитивного замыкания цели. Они будут соответствовать классам в deploy.jar, за исключением случаев, когда jar-файлы не имеют соответствующего исходного jar-файла.

Атрибут deps не разрешается в правиле java_binary без srcs; такое правило требует main_class, предоставленного runtime_deps.

Следующий фрагмент кода демонстрирует распространённую ошибку:

java_binary(
    name = "DontDoThis",
    srcs = [
        ...,
        "GeneratedJavaFile.java",  # a generated .java file
    ],
    deps = [":generating_rule",],  # rule that generates that file
)

Вместо этого сделайте так:

java_binary(
    name = "DoThisInstead",
    srcs = [
        ...,
        ":generating_rule",
    ],
)

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.


Рекомендуется использовать имя исходного файла, являющегося основной точкой входа приложения (без расширения). Например, если ваша точка входа называется Main.java, то ваше имя может быть Main.
deps

List of labels; optional

Список других библиотек, которые нужно подключить к цели. См. общие комментарии по deps в Типичные атрибуты, определяемые большинством правил сборки.
srcs

List of labels; optional

Список исходных файлов, которые обрабатываются для создания цели. Этот атрибут почти всегда обязателен; см. исключения ниже.

Исходные файлы типа .java компилируются. В случае сгенерированных файлов .java рекомендуется указать имя правила генерации, а не само имя файла. Это не только улучшает читаемость, но и делает правило более устойчивым к будущим изменениям: если правило генерации в будущем будет генерировать разные файлы, вам нужно будет исправить только одно место: outs правила генерации. Не следует перечислять правило генерации в deps, поскольку это бесполезно.

Исходные файлы типа .srcjar распаковываются и компилируются. (Это полезно, если вам нужно сгенерировать набор файлов .java с помощью genrule.)

Правила: если правило (обычно genrule или filegroup) генерирует любой из перечисленных выше файлов, они будут использоваться так же, как описано для исходных файлов.

Этот аргумент почти всегда требуется, за исключением случаев, когда атрибут main_class указывает класс в пути выполнения или вы указываете аргумент runtime_deps.

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 можно использовать для указания альтернативного каталога для файлов ресурсов).

Ресурсы могут быть исходными или сгенерированными файлами.

classpath_resources

List of labels; optional

НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ВАРИАНТ, ЕСЛИ НЕТ ДРУГИХ ВАРИАНТОВ

Список ресурсов, которые должны находиться в корне дерева java. Единственная цель этого атрибута — поддержка сторонних библиотек, которые требуют, чтобы их ресурсы находились в пути класса именно как "myconfig.xml". Он разрешен только для бинарных файлов, а не для библиотек, из-за опасности конфликтов имен.

create_executable

Boolean; optional; nonconfigurable; default is True

Является ли двоичный файл исполняемым. Неисполнимые двоичные файлы собирают транзитивные зависимости Java времени выполнения в JAR-файл для развертывания, но их нельзя выполнить напрямую. Скрипт обёртки не создаётся, если этот атрибут установлен. Ошибка, если он установлен в 0, если установлены атрибуты launcher или main_class.
deploy_env

List of labels; optional

Список других целей java_binary, представляющих среду развертывания для этого двоичного файла. Установите этот атрибут при построении плагина, который будет загружен другим java_binary.
Установка этого атрибута исключает все зависимости из пути выполнения (и JAR-файла развертывания) этого двоичного файла, которые совместно используются между этим двоичным файлом и целями, указанными в deploy_env.
deploy_manifest_lines

List of strings; optional

Список строк для добавления в файл META-INF/manifest.mf, сгенерированный для цели *_deploy.jar. Содержимое этого атрибута не подвержено подстановке "Переменных Make".
javacopts

List of strings; optional

Дополнительные параметры компилятора для этой библиотеки. Подвержены подстановке "Переменных Make" и токенизации оболочки Bourne shell.

Эти параметры компилятора передаются в javac после глобальных параметров компилятора.

jvm_flags

List of strings; optional

Список флагов для вставки в скрипт оболочки, сгенерированный для запуска этого двоичного файла. Подвержены подстановке $(location) и "Переменных Make", а также токенизации оболочки Bourne shell.

Скрипт оболочки для двоичного файла Java включает определение CLASSPATH (для поиска всех зависимых JAR-файлов) и вызывает правильный интерпретатор Java. Команда, сгенерированная скриптом оболочки, включает имя главного класса, за которым следует "$@", так что вы можете передать другие аргументы после имени класса. Однако, аргументы, предназначенные для обработки JVM, должны быть указаны *перед* именем класса в командной строке. Содержимое jvm_flags добавляется в скрипт оболочки перед перечислением имени класса.

Обратите внимание, что этот атрибут *не оказывает никакого влияния* на *_deploy.jar результаты.

launcher

Label; optional

Укажите двоичный файл, который будет использоваться для запуска вашей Java-программы вместо стандартной программы bin/java , включённой в JDK. Цель должна быть cc_binary. Любой cc_binary, реализующий Java Invocation API, может быть указан в качестве значения этого атрибута.

По умолчанию Bazel будет использовать стандартный загрузчик JDK (bin/java или java.exe).

Соответствующий флаг Bazel --java_launcher влияет только на те java_binary и java_test цели, которые *не* указали атрибут launcher.

Обратите внимание, что ваши родные (C++, SWIG, JNI) зависимости будут построены по-разному в зависимости от того, используете ли вы загрузчик JDK или другой загрузчик:

  • Если вы используете стандартный загрузчик JDK (по умолчанию), родные зависимости строятся как общая библиотека с именем {name}_nativedeps.so, где {name} — атрибут name этого правила java_binary. Неиспользуемый код *не* удаляется компоновщиком в этой конфигурации.
  • Если вы используете любой другой загрузчик, родные (C++) зависимости статически подключаются к бинарному файлу с именем {name}_nativedeps, где {name} — атрибут name этого правила java_binary. В этом случае компоновщик удалит любой код, который, по его мнению, не используется, из результирующего двоичного файла, что означает, что любой код C++, доступный только через JNI, может не быть подключён, если эта цель cc_library не указывает alwayslink = 1.

При использовании любого загрузчика, отличного от стандартного загрузчика JDK, формат *_deploy.jar выходных данных изменяется. См. основную документацию по java_binary для получения подробностей.

main_class

String; optional

Имя класса с методом main() для использования в качестве точки входа. Если правило использует этот параметр, список srcs=[...] не требуется. Таким образом, с помощью этого атрибута можно создать исполняемый файл из библиотеки Java, которая уже содержит один или несколько методов main().

Значение этого атрибута — имя класса, а не исходный файл. Класс должен быть доступен во время выполнения: он может быть скомпилирован этим правилом (из srcs) или предоставлен прямыми или транзитными зависимостями (через runtime_deps или deps). Если класс недоступен, двоичный файл завершится с ошибкой во время выполнения; проверка во время сборки отсутствует.

plugins

List of labels; optional

Плагины Java-компилятора, которые нужно запустить во время компиляции. Каждый java_plugin , указанный в этом атрибуте, будет выполнен при каждой сборке этого правила. Библиотека также может унаследовать плагины от зависимостей, использующих exported_plugins. Ресурсы, сгенерированные плагином, будут включены в результирующий JAR-файл этого правила.
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.

runtime_deps

List of labels; optional

Библиотеки, которые должны быть доступны для конечного двоичного файла или теста во время выполнения только. Как обычные deps, они появятся в пути выполнения, но, в отличие от них, не в пути компиляции. Зависимости, необходимые только во время выполнения, должны быть перечислены здесь. Инструменты анализа зависимостей должны игнорировать цели, которые появляются как в runtime_deps, так и в deps.
stamp

Integer; optional; default is -1

Нужно ли кодировать информацию о сборке в двоичный файл. Возможные значения:
  • stamp = 1: Всегда вставляйте информацию о сборке в двоичный файл, даже в сборках --nostamp. Этот параметр следует избегать, так как он потенциально убивает кэширование удалённых данных для двоичного файла и любых последующих действий, зависящих от него.
  • stamp = 0: Всегда замещайте информацию о сборке константными значениями. Это даёт хороший кэш результатов сборки.
  • stamp = -1: Вставка информации о сборке контролируется флагом --[no]stamp.

Отмеченные двоичные файлы *не* перестраиваются, если не изменяются их зависимости.

use_launcher

Boolean; optional; default is True

Нужно ли использовать пользовательский загрузчик для двоичного файла.

Если этот атрибут установлен в false, атрибут launcher и связанный --java_launcher флаг будут проигнорированы для данного целевого объекта.

use_testrunner

Boolean; optional; default is False

Использовать запускер тестов (по умолчанию com.google.testing.junit.runner.BazelTestRunner) в качестве точки входа для Java-программы, и предоставить класс тестов загрузчику тестов в качестве значения свойства bazel.test_suite системы. Это позволяет переопределить поведение по умолчанию, которое использует запускер тестов для java_test правил, и не использует его для java_binary правил. Вероятно, вам это не потребуется. Одно из применений — для AllTest правил, которые вызываются другим правилом (например, для настройки базы данных перед запуском тестов). Правило AllTest должно быть объявлено как java_binary, но всё ещё должно использовать запускер тестов в качестве точки входа. Имя класса запуска тестов можно переопределить атрибутом main_class.

java_import

java_import(name, deps, data, compatible_with, constraints, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, visibility)

Это правило позволяет использовать предварительно скомпилированные .jar файлы в качестве библиотек для java_library и java_binary правил.

Примеры

    java_import(
        name = "maven_model",
        jars = [
            "maven_model/maven-aether-provider-3.2.3.jar",
            "maven_model/maven-model-3.2.3.jar",
            "maven_model/maven-model-builder-3.2.3.jar",
        ],
    )

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этого целевого объекта.

deps

List of labels; optional

Список других библиотек, которые необходимо связать с целевым объектом. См. java_library.deps.
constraints

List of strings; optional; nonconfigurable

Дополнительные ограничения, налагаемые на это правило как на Java-библиотеку.
exports

List of labels; optional

Целевые объекты, которые должны быть доступны пользователям этого правила. См. java_library.exports.
jars

List of labels; required

Список JAR-файлов, предоставляемых Java-целевым объектам, зависящим от этого целевого объекта.
neverlink

Boolean; optional; default is False

Использовать эту библиотеку только для компиляции, а не во время выполнения. Это полезно, если библиотека будет предоставлена средой выполнения во время выполнения. Примеры таких библиотек — API IDE для плагинов IDE или tools.jar для всего, что работает на стандартной JDK.
proguard_specs

List of labels; optional

Файлы, используемые в качестве спецификации Proguard. Они описывают набор спецификаций, которые будут использоваться Proguard. Если указаны, они будут добавлены к любому android_binary целевому объекту, зависящему от этой библиотеки. Файлы, включённые сюда, должны содержать только идемпотентные правила, а именно -dontnote, -dontwarn, assumenosideeffects и правила, начинающиеся с -keep. Другие опции могут появляться только в proguard_specs android_binary, чтобы обеспечить нетавтологические слияния.
runtime_deps

List of labels; optional

Библиотеки, которые необходимо сделать доступными для конечного двоичного файла или теста во время выполнения. См. java_library.runtime_deps.
srcjar

Label; optional

JAR-файл, содержащий исходный код для скомпилированных JAR-файлов.

java_library

java_library(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javacopts, licenses, neverlink, plugins, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, visibility)

Это правило компилирует и связывает исходные файлы в .jar файл.

Неявные целевые объекты вывода

  • libname.jar: Java-архив, содержащий файлы классов.
  • libname-src.jar: Архив, содержащий исходные файлы ("исходный jar").

Аргументы

Атрибуты
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's стандартную структуру каталогов (каталог "src", за которым следует внучатый каталог "resources"). Если он не найден, Bazel ищет самый верхний каталог с именем "java" или "javatests" (например, если ресурс находится в <workspace root>/x/java/y/java/z, путь к ресурсу будет y/java/z. Однако этот эвристический метод не может быть переопределён, но атрибут resource_strip_prefix может использоваться для указания альтернативного каталога для файлов ресурсов).

Ресурсы могут быть исходными файлами или сгенерированными файлами.

exported_plugins

List of labels; optional

Список java_plugin (например, обработчики аннотаций) для экспорта в библиотеки, которые напрямую зависят от этой библиотеки.

Указанный список java_plugin будет применяться к любой библиотеке, которая напрямую зависит от этой библиотеки, так же, как если бы эта библиотека явно объявила эти метки в plugins.

exports

List of labels; optional

Экспортируемые библиотеки.

Перечисление правил здесь сделает их доступными для родительских правил, как если бы родители явно зависели от этих правил. Это не относится к обычным (не экспортируемым) deps.

Резюме: правило X может получить доступ к коду в Y, если существует путь зависимости между ними, начинающийся с ребра deps и далее с нуля или более рёбер exports. Посмотрим на некоторые примеры, чтобы проиллюстрировать это.

Предположим, что A зависит от B, а B зависит от C. В этом случае C является транзитивной зависимостью A, поэтому изменение исходного кода C и перестроение A правильно перестроят всё. Однако A не сможет использовать классы в C. Для этого A должно объявить C в своём deps, или B может упростить это для A (и всего, что может зависеть от A), объявив C в своём (B's) атрибуте exports.

Закрытие экспортируемых библиотек доступно всем прямым родительским правилам. Рассмотрим немного другой пример: A зависит от B, B зависит от C и D, и также экспортирует C, но не D. Теперь A имеет доступ к C, но не к D. Теперь, если C и D экспортировали некоторые библиотеки, C' и D' соответственно, A может получить доступ только к C', но не к D'.

Важно: экспортируемое правило не является обычной зависимостью. Возвращаясь к предыдущему примеру, если B экспортирует C и хочет также использовать C, оно должно также перечислить его в своём deps.

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).

plugins

List of labels; optional

Плагины компилятора Java для запуска во время компиляции. Каждый java_plugin , указанный в этом атрибуте, будет выполняться всякий раз, когда это правило будет построено. Библиотека также может унаследовать плагины от зависимостей, использующих exported_plugins. Ресурсы, сгенерированные плагином, будут включены в результирующий jar этого правила.
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.

runtime_deps

List of labels; optional

Библиотеки, доступные только для конечного исполняемого файла или теста во время выполнения. Как и обычные deps, они будут отображаться в пути класса во время выполнения, но, в отличие от них, не в пути класса во время компиляции. Зависимости, необходимые только во время выполнения, должны быть перечислены здесь. Инструменты анализа зависимостей должны игнорировать цели, которые появляются как в runtime_deps, так и в deps.

java_lite_proto_library

java_lite_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

java_lite_proto_library генерирует Java-код из файлов .proto.

deps должен указывать на правила proto_library .

Пример:

java_library(
    name = "lib",
    deps = [":foo"],
)

java_lite_proto_library(
    name = "foo",
    deps = [":bar"],
)

proto_library(
    name = "bar",
)

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.

deps

List of labels; optional

Список правил proto_library для генерации Java-кода.

java_proto_library

java_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

java_proto_library генерирует Java-код из файлов .proto.

deps должен указывать на правила proto_library .

Пример:

java_library(
    name = "lib",
    deps = [":foo_java_proto"],
)

java_proto_library(
    name = "foo_java_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.

deps

List of labels; optional

Список правил proto_library для генерации Java-кода.

java_test

java_test(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, use_testrunner, visibility)

Правило java_test() компилирует Java-тест. Тест — это двоичная оболочка вокруг вашего тестового кода. Вместо компиляции главного класса вызывается метод main тестового исполнителя.

Неявные целевые файлы вывода

  • name.jar: Java-архив.
  • name_deploy.jar: Java-архив, подходящий для развертывания. (Создаётся только при явном запросе). Подробнее см. описание вывода name_deploy.jar из java_binary.

См. раздел аргументов java_binary(). Это правило также поддерживает все общие атрибуты всех правил тестов (*_test).

Примеры

java_library(
    name = "tests",
    srcs = glob(["*.java"]),
    deps = [
        "//java/com/foo/base:testResources",
        "//java/com/foo/testing/util",
    ],
)

java_test(
    name = "AllTests",
    size = "small",
    runtime_deps = [
        ":tests",
        "//util/mysql",
    ],
)

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.

deps

List of labels; optional

Список других библиотек, которые нужно подключить к цели. См. общие замечания об deps в Типичные атрибуты, определённые большинством правил сборки.
srcs

List of labels; optional

Список исходных файлов, которые обрабатываются для создания цели. Этот атрибут почти всегда требуется; см. исключения ниже.

Исходные файлы типа .java компилируются. В случае сгенерированных .java файлов рекомендуется указывать имя правила генерации, а не имя самого файла. Это не только улучшает читаемость, но и делает правило более устойчивым к будущим изменениям: если правило генерации будет генерировать разные файлы в будущем, вам нужно будет исправить только одно место: outs правила генерации. Вы не должны указывать правило генерации в deps, так как это бесполезно.

Исходные файлы типа .srcjar распаковываются и компилируются. (Это полезно, если вам нужно сгенерировать набор .java файлов с помощью genrule.)

Правила: если правило (обычно genrule или filegroup) генерирует любой из перечисленных выше файлов, они будут использоваться так же, как описано для исходных файлов.

Этот аргумент почти всегда требуется, за исключением случаев, когда атрибут main_class указывает класс в пути времени выполнения или вы указываете аргумент runtime_deps.

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 для указания альтернативного каталога для файлов ресурсов).

Ресурсы могут быть исходными файлами или сгенерированными файлами.

classpath_resources

List of labels; optional

НЕ ИСПОЛЬЗОВАТЬ ЭТОТ ВАРИАНТ, ЕСЛИ ЕСТЬ ДРУГОЙ СПОСОБ)

Список ресурсов, которые должны находиться в корне дерева java. Цель этого атрибута — поддержка сторонних библиотек, которым требуется, чтобы их ресурсы находились в пути класса точно в виде "myconfig.xml". Он разрешён только для бинарных файлов, а не для библиотек, из-за опасности конфликтов имён.

create_executable

Boolean; optional; nonconfigurable; default is True

Является ли двоичный файл исполняемым. Неисполнимые двоичные файлы собирают транзитивные зависимости времени выполнения Java в JAR-файл для развертывания, но не могут быть непосредственно запущены. Если этот атрибут установлен, не создаётся скрипт оболочки. Ошибка, если это значение установлено в 0, если установлены атрибуты launcher или main_class.
deploy_manifest_lines

List of strings; optional

Список строк для добавления в META-INF/manifest.mf файл, сгенерированный для цели *_deploy.jar. Содержание этого атрибута не подвержено замене "Переменных make".
javacopts

List of strings; optional

Дополнительные параметры компилятора для этой библиотеки. Подвержено замене "Переменных make" и разбору синтаксиса Bourne shell.

Эти параметры компилятора передаются javac после глобальных параметров компилятора.

jvm_flags

List of strings; optional

Список флагов для вставки в скрипт оболочки, сгенерированный для запуска этого двоичного файла. Подвержено замене $(location) и "Переменных make", а также разбору синтаксиса Bourne shell.

Скрипт оболочки для двоичного файла Java включает определение CLASSPATH (для поиска всех зависимых JAR-файлов) и вызывает нужный интерпретатор Java. Команда, сгенерированная скриптом оболочки, включает имя главного класса, за которым следует "$@", чтобы вы могли передать другие аргументы после имени класса. Однако аргументы, предназначенные для парсинга JVM, должны быть указаны *перед* именем класса в командной строке. Содержание jvm_flags добавляется в скрипт оболочки перед указанием имени класса.

Обратите внимание, что этот атрибут не оказывает никакого влияния на выходы *_deploy.jar.

launcher

Label; optional

Укажите двоичный файл, который будет использоваться для запуска вашей Java-программы вместо обычной bin/java программы, включённой в JDK. Цель должна быть cc_binary. Любой cc_binary , реализующий API вызова Java, может быть указан как значение этого атрибута.

По умолчанию Bazel будет использовать обычный загрузчик JDK (bin/java или java.exe).

Соответствующий флаг Bazel --java_launcher влияет только на те java_binary и java_test цели, которые не указали атрибут launcher.

Обратите внимание, что ваши зависимости нативных (C++, SWIG, JNI) будут построены по-разному в зависимости от того, используете ли вы загрузчик JDK или другой загрузчик:

  • Если вы используете обычный загрузчик JDK (по умолчанию), нативные зависимости строятся как общая библиотека с именем {name}_nativedeps.so, где {name} - это атрибут name этого правила java_binary. Неиспользуемый код не удаляется линковщиком в этой конфигурации.
  • Если вы используете любой другой загрузчик, нативные (C++) зависимости статически подключаются к двоичному файлу с именем {name}_nativedeps, где {name} - это атрибут name этого правила java_binary. В этом случае линковщик удалит любой код, который, по его мнению, не используется из получившегося двоичного файла, что означает, что любой C++ код, доступный только через JNI, может не быть подключен, если этот cc_library целевой файл не указывает alwayslink = 1.

При использовании любого загрузчика, отличного от стандартного загрузчика JDK, формат выходных данных *_deploy.jar изменяется. Подробности см. в основной документации java_binary.

main_class

String; optional

Имя класса с методом main() для использования в качестве точки входа. Если правило использует этот параметр, ему не нужен список srcs=[...]. Таким образом, с помощью этого атрибута можно создать исполняемый файл из библиотеки Java, которая уже содержит один или несколько методов main().

Значение этого атрибута — имя класса, а не имя исходного файла. Класс должен быть доступен во время выполнения: он может быть скомпилирован этим правилом (из srcs) или предоставлен прямыми или транзитивными зависимостями (через runtime_deps или deps). Если класс недоступен, двоичный файл завершится ошибкой во время выполнения; проверки во время сборки нет.

plugins

List of labels; optional

Плагины компилятора Java, которые нужно запустить во время компиляции. Каждый java_plugin , указанный в этом атрибуте, будет выполнен при каждой сборке этого правила. Библиотека также может унаследовать плагины от зависимостей, которые используют exported_plugins. Ресурсы, сгенерированные плагином, будут включены в результирующий JAR этого правила.
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.

runtime_deps

List of labels; optional

Библиотеки, которые должны быть доступны окончательному двоичному файлу или тесту только во время выполнения. Как и обычные deps, они появятся в пути класса времени выполнения, но, в отличие от них, не в пути класса времени компиляции. Зависимости, необходимые только во время выполнения, должны быть указаны здесь. Инструменты анализа зависимостей должны игнорировать цели, которые присутствуют как в runtime_deps, так и в deps.
stamp

Integer; optional; default is 0

Нужно ли кодировать информацию о сборке в двоичный файл. Возможные значения:
  • stamp = 1: Всегда добавляйте информацию о сборке в двоичный файл, даже в сборках --nostamp. От этого следует отказаться, так как это может потенциально убить кэширование удалённой сборки для двоичного файла и всех последующих действий, которые зависят от него.
  • stamp = 0: Всегда замещайте информацию о сборке постоянными значениями. Это даёт хорошую кэширование результатов сборки.
  • stamp = -1: Вставка информации о сборке контролируется флагом --[no]stamp.

Скомпилированные двоичные файлы не перестраиваются, если не изменились их зависимости.

test_class

String; optional

Класс Java, который должен быть загружен тестовым исполнителем.

По умолчанию, если этот аргумент не определен, используется старый режим, и вместо него применяются тестовые аргументы. Установите флаг --nolegacy_bazel_java_test для отключения возврата к первому аргументу.

Этот атрибут указывает имя класса Java, который должен быть запущен этим тестом. В редких случаях необходимо установить это значение. Если этот аргумент опущен, он будет определен с помощью name целевого объекта и его пути, относительного к корню исходного кода. Если тест расположен вне известного корня исходного кода, Bazel сообщит об ошибке, если test_class не задано.

Для JUnit3, тестовый класс должен быть подклассом junit.framework.TestCase или должен иметь публичный статический метод suite(), возвращающий junit.framework.Test (или подкласс Test). Для JUnit4 класс должен быть аннотирован org.junit.runner.RunWith.

Этот атрибут позволяет нескольким правилам java_test использовать один и тот же Test (TestCase, TestSuite, ...). Обычно дополнительная информация передается в него (например, через jvm_flags=['-Dkey=value']), чтобы его поведение отличалось в каждом случае, например, для запуска подмножества тестов. Этот атрибут также позволяет использовать тесты Java вне дерева javatests.

use_launcher

Boolean; optional; default is True

Использовать ли бинарному файлу пользовательский загрузчик.

Если этот атрибут установлен в false, атрибут launcher и соответствующий флаг --java_launcher будут проигнорированы для этой цели.

use_testrunner

Boolean; optional; default is True

Использовать тестовый загрузчик (по умолчанию com.google.testing.junit.runner.BazelTestRunner) в качестве главной точки входа для Java-программы и предоставить тестовый класс тестовому загрузчику в качестве значения системной переменной bazel.test_suite. Вы можете использовать это для переопределения поведения по умолчанию, которое заключается в использовании тестового загрузчика для правил java_test, и не использовании его для правил java_binary. Вероятно, вам этого делать не захочется. Одно из применений — для правил AllTest, которые вызываются другим правилом (например, для настройки базы данных перед запуском тестов). Правило AllTest должно быть объявлено как java_binary, но при этом должно использовать тестовый загрузчик в качестве главной точки входа. Имя класса тестового загрузчика можно переопределить атрибутом main_class.

java_package_configuration

java_package_configuration(name, data, compatible_with, deprecation, distribs, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, visibility)

Конфигурация для применения к набору пакетов. Конфигурации могут быть добавлены к java_toolchain.javacopts.

Пример:

java_package_configuration(
    name = "my_configuration",
    packages = [":my_packages"],
    javacopts = ["-Werror"],
)

package_group(
    name = "my_packages",
    packages = [
        "//com/my/project/...",
        "-//com/my/project/testing/...",
    ],
)

java_toolchain(
    ...,
    package_configuration = [
        ":my_configuration",
    ]
)

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.

data

List of labels; optional

Список файлов, необходимых для этой конфигурации во время выполнения.
javacopts

List of strings; optional

Флаги компилятора Java.
packages

List of labels; optional

Набор package_groups, к которым должна быть применена конфигурация.

java_plugin

java_plugin(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, visibility)

java_plugin определяет плагины для компилятора Java, выполняемого Bazel. В настоящее время единственный поддерживаемый тип плагинов — обработчики аннотаций. Правило java_library или java_binary может запускать плагины, завися от них через атрибут plugins. Правило java_library также может автоматически экспортировать плагины в библиотеки, которые зависят от него напрямую, используя exported_plugins.

Неявные целевые выходы

  • libname.jar: Java архив.

Аргументы идентичны java_library, за исключением добавления аргумента processor_class.

Аргументы

Атрибуты
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

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",
)

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.

android_lint_data

List of labels; optional

Метки доступных инструментов для расширения меток в android_lint_jvm_opts.
android_lint_jvm_opts

List of strings; optional

Список аргументов для JVM при вызове Android Lint.
android_lint_opts

List of strings; optional

Список аргументов Android Lint.
android_lint_package_configuration

List of labels; optional

Конфигурация Android Lint, которая должна быть применена к указанным группам пакетов.
android_lint_runner

Label; optional

Метка исполнителя Android Lint, если таковой имеется.
bootclasspath

List of labels; optional

Записи загрузки среды выполнения Java. Соответствует флагу -bootclasspath javac.
deps_checker

List of labels; optional

Метка развертываемого jar-файла ImportDepsChecker.
forcibly_disable_header_compilation

Boolean; optional; default is False

Переопределяет --java_header_compilation для отключения компиляции заголовков на платформах, которые ее не поддерживают, например, JDK 7 Bazel.
genclass

List of labels; required

Метка развертываемого jar-файла GenClass.
header_compiler

List of labels; optional

Метка компилятора заголовков. Требуется, если включена --java_header_compilation.
header_compiler_direct

List of labels; optional

Необязательная метка компилятора заголовков для использования в прямых действиях с дорожкой классов, которые не включают никакие обработчики аннотаций, генерирующие API.

Этот инструмент не поддерживает обработку аннотаций.

ijar

List of labels; required

Метка исполняемого файла ijar.
jacocorunner

Label; optional

Метка развертываемого jar-файла JacocoCoverageRunner.
java_runtime

Label; required

java_runtime, используемый с этим инструментом. По умолчанию соответствует java_runtime в конфигурации выполнения.
javabuilder

List of labels; required

Метка развертываемого jar-файла JavaBuilder.
javabuilder_data

List of labels; optional

Метки доступных данных для расширения меток в javabuilder_jvm_opts.
javabuilder_jvm_opts

List of strings; optional

Список аргументов для JVM при вызове JavaBuilder.
javac_supports_multiplex_workers

Boolean; optional; default is True

True, если JavaBuilder поддерживает запуск в качестве многопоточного персистентного работника; false — в противном случае.
javac_supports_workers

Boolean; optional; default is True

True, если JavaBuilder поддерживает запуск в качестве персистентного работника; false — в противном случае.
javacopts

List of strings; optional

Список дополнительных аргументов для компилятора Java. Обратитесь к документации компилятора Java для получения подробного списка возможных флагов компилятора Java.
jvm_opts

List of strings; optional

Список аргументов для JVM при вызове компилятора Java. Обратитесь к документации виртуальной машины Java для получения подробного списка возможных флагов для этого параметра.
oneversion

Label; optional

Метка двоичного файла для принудительного применения одной версии.
oneversion_whitelist

Label; optional

Метка белого списка одной версии.
package_configuration

List of labels; optional

Конфигурация, которая должна быть применена к указанным группам пакетов.
proguard_allowlister

Label; optional; default is @bazel_tools//tools/jdk:proguard_whitelister

Метка Proguard allowlister.
resourcejar

List of labels; optional

Метка исполняемого файла для создания jar-файлов ресурсов.
singlejar

List of labels; required

Метка развертываемого jar-файла SingleJar.
source_version

String; optional

Версия исходного кода Java (например, '6' или '7'). Указывает, какие структуры кода разрешены в исходном коде Java.
target_version

String; optional

Целевая версия Java (например, '6' или '7'). Указывает, для какой среды выполнения Java должен быть скомпилирован класс.
timezone_data

Label; optional

Метка jar-файла ресурсов с данными часового пояса. Если установлено, данные часового пояса добавляются как неявная зависимость времени выполнения всех правил java_binary.
tools

List of labels; optional

Метки доступных инструментов для расширения меток в jvm_opts.
turbine_data

List of labels; optional

Метки доступных данных для расширения меток в turbine_jvm_opts.
turbine_jvm_opts

List of strings; optional

Список аргументов для JVM при вызове turbine.
xlint

List of strings; optional

Список предупреждений для добавления или удаления из списка по умолчанию. Предшествует знаком минус для удаления. Дополнительную информацию см. в документации Javac по параметрам -Xlint.

За исключением случаев, оговоренных в ином порядке, содержимое этой страницы лицензируется по лицензии Creative Commons Attribution 4.0, а примеры кода — по лицензии Apache 2.0. Подробности см. в Политике разработчиков Google. Java — зарегистрированный товарный знак Oracle и/или ее филиалов.

Последнее обновление 2023-03-15 UTC.

Licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License.
https://bazel.build/versions/6.1.0/reference/be/java

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API