Spec-Zone.ru › Bazel 6.3

Правила 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

Список файлов данных для включения в 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 времени выполнения в deploy jar, но не могут быть выполнены напрямую. Скрипт оболочки не создается, если этот атрибут установлен. Это ошибка установить значение 0, если установлены атрибуты launcher или main_class.
deploy_env

List of labels; optional

Список других java_binary целевых объектов, представляющих среду развертывания для этого бинарника. Установите этот атрибут при построении плагина, который будет загружен другим java_binary.
Установка этого атрибута исключает все зависимости из пути выполнения (и deploy jar) этого бинарника, которые совместно используются между этим бинарником и целевыми объектами, указанными в deploy_env.
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).

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

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

  • Если вы используете стандартный загрузчик JDK (по умолчанию), зависимости native построены как общая библиотека с именем {name}_nativedeps.so, где {name} — атрибут name этого правила java_binary. Неиспользуемый код не удаляется линковщиком в этой конфигурации.
  • Если вы используете любой другой загрузчик, зависимости native (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.

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

END_OF_DOCUMENT_MARKER
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-архив, содержащий файлы .class.
  • 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 стандартная структура каталогов (каталог "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) атрибуте 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 variable" и разбору символов командной строки 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. Другие опции могут появляться только в 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-тест. Тест — это бинарная оболочка вашего тестового кода. Вместо компиляции главного класса вызывается главный метод тестового исполнителя.

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

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

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

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

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

Эти параметры компилятора передаются 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, version, visibility)

Указывает конфигурацию для Java-среды выполнения.

Пример:

java_runtime(
    name = "jdk-9-ea+153",
    srcs = glob(["jdk9-ea+153/**"]),
    java_home = "jdk9-ea+153",
)

Аргументы

Атрибуты
name

Name; required

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

srcs

List of labels; optional

Все файлы в среде выполнения.
hermetic_srcs

List of labels; optional

Файлы в среде выполнения, необходимые для герметичных развертываний.
java

Label; optional

Путь к исполняемому файлу java.
java_home

String; optional

Путь к корню среды выполнения. Подлежит подстановке "Переменных make". Если этот путь абсолютный, правило обозначает негерметичную Java-среду выполнения с известным путём. В этом случае атрибуты srcs и java должны быть пустыми.
lib_modules

Label; optional

Файл lib/modules, необходимый для герметичных развертываний.
version

Integer; optional; default is 0

Версия функции Java-среды выполнения. То есть целое число, возвращаемое Runtime.version().feature().

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

Элементы загрузки bootclasspath для целевого Java. Соответствует флагу javac -bootclasspath.
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

Метка исполняемого файла для сборки resource 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-07-25 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.3.0/reference/be/java

Spec-Zone.ru

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