Spec-Zone.ru › Bazel 6.0

Правила 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-классовом пути или вы указываете аргумент runtime_deps.

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

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

classpath_resources

List of labels; optional

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

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

create_executable

Boolean; optional; nonconfigurable; default is True

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

List of labels; optional

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

List of strings; optional

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

List of strings; optional

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

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

jvm_flags

List of strings; optional

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

Скрипт обертки для 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-классовом пути, но в отличие от них, не в compile-time-классовом пути. Зависимости, необходимые только во время выполнения, должны быть перечислены здесь. Инструменты анализа зависимостей должны игнорировать цели, которые появляются как в 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 включаются в файлы выполнения, но не включаются ни в путь к файлам класса во время компиляции, ни в путь к файлам класса во время выполнения.

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

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

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, оно должно также указать C в своём deps.

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

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. Другие параметры могут появляться только в про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.

runtime_deps

List of labels; optional

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

java_lite_proto_библиотека

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_библиотека

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

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

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

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.

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

jvm_flags

List of strings; optional

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

Скрипт оболочки для 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 0

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

Отмеченные бинарники не перестраиваются, если их зависимости не изменились.

END_OF_DOCUMENT_MARKER
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, но его путь 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

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 runner, если таковая имеется.
bootclasspath

List of labels; optional

Элементы загрузчика класса Java-цели. Соответствует флагу javac -bootclasspath.
deps_checker

List of labels; optional

Метка deploy jar ImportDepsChecker.
forcibly_disable_header_compilation

Boolean; optional; default is False

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

List of labels; required

Метка deploy 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

Метка deploy jar JacocoCoverageRunner.
java_runtime

Label; required

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

List of labels; required

Метка deploy 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

Метка deploy 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 Developers. Java — зарегистрированный товарный знак Oracle и/или её дочерних компаний.

Последнее обновление 2022-12-19 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.0.0/reference/be/java

Spec-Zone.ru

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