Spec-Zone.ru › Bazel 7.0

Правила Java

Правила

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

java_binary

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

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

Оболочечная командная оболочка принимает несколько уникальных флагов. Обратитесь к //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

Имя; обязательно

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


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

Список меток; значение по умолчанию []

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

Список меток; значение по умолчанию []

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

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

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

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

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

resources

Список меток; значение по умолчанию []

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

Если ресурсы указаны, они будут включены в jar вместе с обычными .class файлами, созданными в результате компиляции. Расположение ресурсов внутри файла jar определяется структурой проекта. Bazel сначала ищет стандартную структуру директорий Maven стандартную структуру директорий (директория "src", за которой следует вложенная директория "resources"). Если это не найдено, Bazel ищет верхнюю директорию с именем "java" или "javatests" (например, если ресурс находится по адресу <workspace root>/x/java/y/java/z, путь к ресурсу будет y/java/z. Этот эвристический подход нельзя переопределить, однако атрибут resource_strip_prefix можно использовать для указания альтернативной директории для файлов ресурсов).

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

classpath_resources

Список меток; значение по умолчанию []

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

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

create_executable

Булево; не настраиваемый; значение по умолчанию True

Устарело, используйте java_single_jar вместо этого.
deploy_env

Список меток; значение по умолчанию []

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

Список строк; значение по умолчанию []

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

Список строк; значение по умолчанию []

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

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

jvm_flags

Список строк; значение по умолчанию []

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

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

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

launcher

Метка; значение по умолчанию None

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

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

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

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

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

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

main_class

Строка; значение по умолчанию ""

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

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

plugins

Список меток; значение по умолчанию []

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

Список меток; значение по умолчанию []

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

Строка; значение по умолчанию ""

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

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

runtime_deps

Список метки; по умолчанию []

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

Целое число; по умолчанию -1

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

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

use_launcher

Булево значение; по умолчанию True

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

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

use_testrunner

Булево значение; по умолчанию 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

Имя; обязательно

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

deps

Список меток; по умолчанию []

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

Список строк; неконфигурируемый; по умолчанию []

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

Список меток; по умолчанию []

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

Список меток; обязательно

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

Булево значение; по умолчанию False

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

Список меток; по умолчанию []

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

Список меток; по умолчанию []

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

Метка; по умолчанию None

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

Имя; обязательно

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

deps

Список меток; значение по умолчанию []

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

JAR-файлы, созданные правилами java_library в списке deps, будут находиться в пути поиска классов во время компиляции этого правила. Кроме того, транзитивное замыкание их deps, runtime_deps и exports будет находиться в пути поиска классов во время выполнения.

В отличие от этого, цели в атрибуте data включаются в runfiles, но не в пути поиска классов во время компиляции и выполнения.

srcs

Список меток; значение по умолчанию []

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

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

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

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

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

data

Список меток; значение по умолчанию []

Список файлов, необходимых этой библиотеке во время выполнения. См. общие замечания о data по адресу Типичные атрибуты, определенные большинством правил сборки.

При построении java_library, Bazel не помещает эти файлы никуда; если файлы data являются сгенерированными файлами, Bazel сгенерирует их. При построении теста, зависящего от этой java_library, Bazel копирует или связывает файлы data в область runfiles.

resources

Список меток; значение по умолчанию []

Список файлов данных для включения в 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

Список меток; значение по умолчанию []

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

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

exports

Список меток; значение по умолчанию []

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

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

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

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

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

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

javacopts

Список строк; значение по умолчанию []

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

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

neverlink

Булево значение; значение по умолчанию False

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

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

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

plugins

Список меток; значение по умолчанию []

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

Список меток; значение по умолчанию []

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

Список меток; значение по умолчанию []

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

Строка; значение по умолчанию ""

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

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

runtime_deps

Список меток; значение по умолчанию []

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

Имя; обязательно

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

deps

Список мет; по умолчанию []

Список правил 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

Имя; обязательно

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

deps

Список мет; по умолчанию []

Список правил 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

Имя; обязательно

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

deps

Список меток; значение по умолчанию []

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

Список меток; значение по умолчанию []

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

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

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

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

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

resources

Список меток; значение по умолчанию []

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

Если ресурсы указаны, они будут включены в jar вместе с обычными .class файлами, созданными в результате компиляции. Положение ресурсов внутри jar-файла определяется структурой проекта. Bazel сначала ищет стандартную структуру каталогов Maven (стандартная структура каталогов), (каталог "src", за которым следует внучатый каталог "resources"). Если он не найден, Bazel ищет самый верхний каталог с именем "java" или "javatests" (например, если ресурс находится по адресу <workspace root>/x/java/y/java/z, путь к ресурсу будет y/java/z. Этот эвристический способ нельзя переопределить, однако, атрибут resource_strip_prefix можно использовать для указания альтернативного каталога для файлов ресурсов).

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

classpath_resources

Список меток; значение по умолчанию []

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

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

create_executable

Булево значение; неконфигурируемый; значение по умолчанию True

Устарело, используйте java_single_jar вместо этого.
deploy_manifest_lines

Список строк; значение по умолчанию []

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

Список строк; значение по умолчанию []

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

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

jvm_flags

Список строк; значение по умолчанию []

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

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

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

launcher

Метка; значение по умолчанию None

Укажите программу, которая будет использоваться для запуска вашей программы 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

Строка; значение по умолчанию ""

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

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

plugins

Список меток; значение по умолчанию []

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

Список меток; значение по умолчанию []

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

Строка; значение по умолчанию ""

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

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

runtime_deps

Список меток; значение по умолчанию []

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

Целое число; по умолчанию 0

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

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

test_class

Строка; по умолчанию ""

Класс 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

Булево значение; по умолчанию True

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

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

use_testrunner

Булево значение; по умолчанию True

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

Настройка_пакета_java

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

Имя; обязательно

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

data

Список меток; по умолчанию []

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

Список строк; по умолчанию []

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

Список меток; по умолчанию []

Набор package_group объектов, к которым должна применяться настройка.

Плагин_java

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

Имя; обязательно

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

deps

Список метки; значение по умолчанию []

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

JAR-файлы, созданные правилами java_library в списке deps, будут входить в путь поиска классов во время компиляции этого правила. Кроме того, транзитивное замыкание их deps, runtime_deps и exports будет входить в путь поиска классов во время выполнения.

В отличие от этого, цели в атрибуте data включаются в runfiles, но не в пути поиска классов во время компиляции или выполнения.

srcs

Список метки; значение по умолчанию []

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

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

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

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

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

data

Список метки; значение по умолчанию []

Список файлов, необходимых этой библиотеке во время выполнения. См. общие комментарии о data в Типичные атрибуты, определяемые большинством правил сборки.

При построении java_library, Bazel не помещает эти файлы никуда; если файлы data являются сгенерированными файлами, то Bazel их генерирует. При построении теста, зависящего от этой java_library, Bazel копирует или связывает файлы data в область runfiles.

resources

Список метки; значение по умолчанию []

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

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

generates_api

Булево значение; значение по умолчанию False

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

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

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

javacopts

Список строк; значение по умолчанию []

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

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

neverlink

Булево значение; значение по умолчанию False

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

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

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

output_licenses

Тип лицензии; значение по умолчанию ["none"]

См. common attributes
plugins

Список метки; значение по умолчанию []

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

Строка; значение по умолчанию ""

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

Список метки; значение по умолчанию []

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

Список метки; значение по умолчанию []

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

Строка; значение по умолчанию ""

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

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

java_runtime

java_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_ct_sym, 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

Имя; обязательно

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

srcs

Список метки; по умолчанию []

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

Метка; по умолчанию None

Архив CDS по умолчанию для java_runtime среды выполнения. Когда java_binary включён для цели, и цель не предоставляет собственный архив CDS, указав атрибут classlist, по умолчанию java_runtime архив CDS упаковывается в hermetic JAR.
hermetic_srcs

Список меток; по умолчанию []

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

Метка; по умолчанию None

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

Строка; по умолчанию ""

Путь к корню среды выполнения. Подлежит замене переменной «Make». Если этот путь является абсолютным, правило обозначает не-hermetic среду выполнения Java с известным путём. В этом случае атрибуты srcs и java должны быть пустыми.
lib_ct_sym

Метка; по умолчанию None

Файл lib/ct.sym, необходимый для компиляции с --release. Если не указано и в srcs ровно один файл, путь которого оканчивается на /lib/ct.sym, то используется этот файл.
lib_modules

Метка; по умолчанию None

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

Целое число; по умолчанию 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_allowlist_for_tests, 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

Имя; обязательно

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

android_lint_data

Список метки; значение по умолчанию []

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

Список строк; значение по умолчанию []

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

Список строк; значение по умолчанию []

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

Список меток; значение по умолчанию []

Настройка Android Lint, которая должна применяться к указанным группам пакетов.
android_lint_runner

Метка; значение по умолчанию None

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

Список меток; значение по умолчанию []

Записи bootclasspath для Java-цели. Соответствует флагу javac -bootclasspath.
deps_checker

Список меток; значение по умолчанию []

Метка Jar-файла ImportDepsChecker deploy.
forcibly_disable_header_compilation

Булево значение; значение по умолчанию False

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

Список меток; обязательно

Метка Jar-файла GenClass deploy.
header_compiler

Список меток; значение по умолчанию []

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

Список меток; значение по умолчанию []

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

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

ijar

Список меток; обязательно

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

Метка; значение по умолчанию None

Метка Jar-файла JacocoCoverageRunner deploy.
java_runtime

Метка; обязательно

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

Список меток; обязательно

Метка Jar-файла JavaBuilder deploy.
javabuilder_data

Список меток; значение по умолчанию []

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

Список строк; значение по умолчанию []

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

Булево значение; значение по умолчанию True

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

Булево значение; значение по умолчанию True

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

Список строк; значение по умолчанию []

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

Список строк; значение по умолчанию []

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

Метка; значение по умолчанию None

Метка двоичного файла для обеспечения соответствия одной версии.
oneversion_allowlist_for_tests

Метка; значение по умолчанию None

Метка списка разрешений для тестов для обеспечения соответствия одной версии.
oneversion_whitelist

Метка; значение по умолчанию None

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

Список меток; значение по умолчанию []

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

Метка; значение по умолчанию "@bazel_tools//tools/jdk:proguard_whitelister"

Метка Proguard allowlister.
resourcejar

Список меток; значение по умолчанию []

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

Список меток; обязательно

Метка Jar-файла SingleJar deploy.
source_version

Строка; значение по умолчанию ""

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

Строка; значение по умолчанию ""

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

Метка; значение по умолчанию None

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

Список меток; значение по умолчанию []

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

Список меток; значение по умолчанию []

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

Список строк; значение по умолчанию []

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

Список строк; значение по умолчанию []

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

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

Последнее обновление 2023-12-11 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/7.0.0/reference/be/java

Spec-Zone.ru

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