Spec-Zone.ru › Bazel 6.4

Правила 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 стандартную структуру каталогов (каталог "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).

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

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

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

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

main_class

String; optional

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

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

plugins

List of labels; optional

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

List of labels; optional

Устарело: используйте java_import и deps или runtime_deps вместо этого.
resource_strip_prefix

String; optional

Префикс пути для удаления из Java-ресурсов.

Если указан, этот префикс пути удаляется из каждого файла в атрибуте resources . Ошибка возникает, если файл ресурса не находится в этом каталоге. Если не указан (по умолчанию), путь к файлу ресурса определяется по тому же принципу, что и Java-пакет исходных файлов. Например, исходный файл по пути stuff/java/foo/bar/a.txt будет находиться по пути foo/bar/a.txt.

runtime_deps

List of labels; optional

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

Integer; optional; default is -1

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

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

use_launcher

Boolean; optional; default is True

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

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

use_testrunner

Boolean; optional; default is False

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

java_import

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

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

Примеры

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

Аргументы

Атрибуты
name

Name; required

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

deps

List of labels; optional

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

List of strings; optional; nonconfigurable

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

List of labels; optional

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

List of labels; required

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

Boolean; optional; default is False

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

List of labels; optional

Файлы, используемые в качестве спецификаций Proguard. Они описывают набор спецификаций, используемых Proguard. Если указаны, они будут добавлены к любой android_binary цели, зависящей от этой библиотеки. Файлы, включённые здесь, должны содержать только идемпотентные правила, а именно -dontnote, -dontwarn, assumenosideeffects и правила, начинающиеся с -keep. Другие опции могут появляться только в проguard_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 в область файлов запуска.

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

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

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 в своем атрибуте exports.

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

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

javacopts

List of strings; optional

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

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

neverlink

Boolean; optional; default is False

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

Обратите внимание, что neverlink = 1 не препятствует компилятору встраивать материал из этой библиотеки в целевые объекты компиляции, которые от нее зависят, как разрешено спецификацией языка Java (например, static final константы String или примитивных типов). Поэтому предпочтительным случаем использования является тот, когда библиотека выполнения идентична библиотеке компиляции.

Если библиотека выполнения отличается от библиотеки компиляции, необходимо убедиться, что они отличаются только в тех местах, которые JLS запрещает компиляторам встраивать (и это должно выполняться для всех будущих версий JLS).

plugins

List of labels; optional

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

List of labels; optional

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

List of labels; optional

Устарело: используйте java_import и deps или runtime_deps вместо этого.
resource_strip_prefix

String; optional

Префикс пути для удаления из Java-ресурсов.

Если указан, этот префикс пути удаляется из каждого файла в атрибуте resources. Файл ресурса должен находиться в этой папке. Если не указан (по умолчанию), путь к файлу ресурса определяется в соответствии с той же логикой, что и пакет Java исходных файлов. Например, исходный файл по адресу stuff/java/foo/bar/a.txt будет расположен в foo/bar/a.txt.

runtime_deps

List of labels; optional

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

java_lite_proto_library

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

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

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

Пример:

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

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

proto_library(
    name = "bar",
)

Аргументы

Атрибуты
name

Name; required

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

deps

List of labels; optional

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

java_proto_library

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

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

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

Пример:

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

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

proto_library(
    name = "foo_proto",
)

Аргументы

Атрибуты
name

Name; required

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

deps

List of labels; optional

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

java_test

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

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

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

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

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

Примеры

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

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

Аргументы

Атрибуты
name

Name; required

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

deps

List of labels; optional

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

List of labels; optional

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

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

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

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

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

resources

List of labels; optional

Список файлов данных для включения в jar-файл Java.

Если ресурсы указаны, они будут включены в jar вместе с обычными .class файлами, созданными в результате компиляции. Расположение ресурсов внутри jar-файла определяется структурой проекта. Bazel сначала ищет стандартную структуру Maven (стандартный директорий 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 в deploy 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, реализующий Java Invocation API, может быть указан в качестве значения для этого атрибута.

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

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

Integer; optional; default is 0

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

Бинарники со штампом не перестраиваются, если их зависимости не изменились.

test_class

String; optional

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

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

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

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

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

use_launcher

Boolean; optional; default is True

Использует ли двоичный файл пользовательский запускатель.

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

use_testrunner

Boolean; optional; default is True

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

java_package_configuration

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

Настройка, которая должна применяться к набору пакетов. Настройки могут быть добавлены к java_toolchain.javacopts.

Пример:

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

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

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

Аргументы

Атрибуты
name

Name; required

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

data

List of labels; optional

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

List of strings; optional

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

List of labels; optional

Набор package_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

Дополнительные параметры компилятора для этой библиотеки. Подвержены замене переменных «Сделать переменную» и разбору 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

Путь к корню среды выполнения. Подвергается замене переменной «Сделать переменную». Если этот путь абсолютный, правило обозначает негерметичную среду выполнения 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, если таковой имеется.
bootclasspath

List of labels; optional

Элементы загрузки bootclasspath 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

Необязательная метка компилятора заголовков для использования в действиях с прямым classpath, которые не включают в себя какие-либо генераторы 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 и/или ее аффилированных лиц.

Последнее обновление: 2023-10-20 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.4.0/reference/be/java

Spec-Zone.ru

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