Spec-Zone.ru › Bazel 6.2

Правила 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-файла будут добавлены к этому нативному двоичному файлу, создавая один двоичный blob, содержащий как исполняемый файл, так и 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-classpath или вы указываете аргумент runtime_deps.

resources

List of labels; optional

Список файлов данных, которые нужно включить в JAR-файл Java.

Если ресурсы указаны, они будут включены в 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. Цель этого атрибута — поддержка сторонних библиотек, которые требуют, чтобы их ресурсы находились в classpath точно так же, как "myconfig.xml". Он разрешен только для библиотек, а не для бинарных файлов, из-за опасности конфликтов имён.

create_executable

Boolean; optional; nonconfigurable; default is True

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

List of labels; optional

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

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

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

exported_plugins

List of labels; optional

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

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

exports

List of labels; optional

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

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

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

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

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

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

javacopts

List of strings; optional

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

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

neverlink

Boolean; optional; default is False

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

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

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

plugins

List of labels; optional

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

List of labels; optional

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

List of labels; optional

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

String; optional

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

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

runtime_deps

List of labels; optional

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

java_lite_proto_library

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

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

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

Пример:

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

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

proto_library(
    name = "bar",
)

Аргументы

Атрибуты
name

Name; required

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

deps

List of labels; optional

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

java_proto_library

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

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

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

Пример:

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

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

proto_library(
    name = "foo_proto",
)

Аргументы

Атрибуты
name

Name; required

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

deps

List of labels; optional

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

java_test

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

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

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

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

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

Примеры

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

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

Аргументы

Атрибуты
name

Name; required

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

deps

List of labels; optional

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

List of labels; optional

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

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

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

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

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

resources

List of labels; optional

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

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

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

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

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

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

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

main_class

String; optional

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

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

plugins

List of labels; optional

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

List of labels; optional

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

String; optional

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

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

runtime_deps

List of labels; optional

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

Integer; optional; default is 0

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

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

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

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

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

generates_api

Boolean; optional; default is False

Этот атрибут отмечает обработчики аннотаций, которые генерируют код API.

Если правило использует обработчик аннотаций, генерирующий код API, другие правила, зависящие от него, могут ссылаться на сгенерированный код только в том случае, если их действия компиляции запланированы после правила генерации. Этот атрибут инструктирует Bazel вводить ограничения по планированию при включённом --java_header_compilation.

ПРЕДУПРЕЖДЕНИЕ: Этот атрибут влияет на производительность сборки, используйте его только в случае необходимости.

javacopts

List of strings; optional

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

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

neverlink

Boolean; optional; default is False

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

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

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

output_licenses

Licence type; optional

См. common attributes
plugins

List of labels; optional

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

String; optional

Класс обработчика — это полное квалифицированное имя класса, который компилятор Java должен использовать в качестве точки входа в обработчик аннотаций. Если не указано, это правило не внесёт обработчик аннотаций в обработку аннотаций компилятора Java, но путь к его классам во время выполнения всё равно будет включён в путь обработчика аннотаций компилятора. (Это предназначено в первую очередь для использования плагинами Error Prone, которые загружаются из пути обработчика аннотаций с помощью java.util.ServiceLoader.)
proguard_specs

List of labels; optional

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

List of labels; optional

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

String; optional

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

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

java_runtime

java_runtime(name, srcs, compatible_with, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_modules, licenses, restricted_to, tags, target_compatible_with, testonly, 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" variable. Если этот путь является абсолютным, правило обозначает негерметичную 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

Метка JAR-пакета ImportDepsChecker.
forcibly_disable_header_compilation

Boolean; optional; default is False

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

List of labels; required

Метка JAR-пакета GenClass.
header_compiler

List of labels; optional

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

List of labels; optional

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

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

ijar

List of labels; required

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

Label; optional

Метка JAR-пакета JacocoCoverageRunner.
java_runtime

Label; required

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

List of labels; required

Метка JAR-пакета JavaBuilder.
javabuilder_data

List of labels; optional

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

List of strings; optional

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

Boolean; optional; default is True

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

Boolean; optional; default is True

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

List of strings; optional

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

List of strings; optional

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

Label; optional

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

Label; optional

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

List of labels; optional

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

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

Метка Proguard allowlister.
resourcejar

List of labels; optional

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

List of labels; required

Метка JAR-пакета SingleJar.
source_version

String; optional

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

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

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

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

Spec-Zone.ru

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