Правила Java

Сообщить о проблеме Посмотреть исходный код

Правила

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

    Банка развертывания содержит все классы, которые мог бы найти загрузчик классов, который просматривал путь к классам из сценария-оболочки двоичного файла от начала до конца. Он также содержит собственные библиотеки, необходимые для зависимостей. Они автоматически загружаются в JVM во время выполнения.

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

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

Дополнительные параметры компилятора для этой библиотеки. При условии замены «Makevariable» и токенизации оболочки Bourne .

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

jvm_flags

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

Список флагов для встраивания в сценарий-оболочку, созданный для запуска этого двоичного файла. При условии замены $(location) и «Makevariable» , а также токенизации оболочки 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).

Соответствующий флаг --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

Нить; по умолчанию ""

Имя класса с методом 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, атрибут средства запуска и связанный с ним флаг --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, add_exports, add_opens, 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, toolchains, 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 .
data

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

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

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

Разрешите этой библиотеке доступ к данному module или package .

Это соответствует флагам javac и JVM --add-exports=.

add_opens

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

Разрешить этой библиотеке рефлексивный доступ к данному module или package .

Это соответствует флагам javac и JVM --add-opens=.

constraints

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

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

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

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

Список ярлыков ; необходимый

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

логическое значение; по умолчанию — False

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

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

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

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

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

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

Файл JAR, содержащий исходный код для скомпилированных файлов JAR.

java_library

Посмотреть исходный код правила
java_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)

Это правило компилирует и связывает источники в файл .jar .

Неявные результаты

  • lib name .jar : архив Java, содержащий файлы классов.
  • lib name -src.jar : архив, содержащий исходные коды («исходный jar»).

Аргументы

Атрибуты
name

Имя ; необходимый

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

deps

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

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

Файлы jar, созданные по правилам java_library , перечисленным в deps будут находиться в пути к классам этого правила во время компиляции. Более того, транзитивное закрытие их deps , runtime_deps и exports будет происходить в пути к классам во время выполнения.

Напротив, целевые объекты в атрибуте data включаются в файлы выполнения, но не в путь к классам времени компиляции и времени выполнения.

srcs

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

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

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

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

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

Исходные файлы типа .properties рассматриваются как ресурсы.

Все остальные файлы игнорируются, если существует хотя бы один файл описанного выше типа. В противном случае выдается ошибка.

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

data

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

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

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

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

add_exports

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

Разрешите этой библиотеке доступ к данному module или package .

Это соответствует флагам javac и JVM --add-exports=.

add_opens

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

Разрешить этой библиотеке рефлексивный доступ к данному module или package .

Это соответствует флагам javac и JVM --add-opens=.

bootclasspath

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

Ограниченный API, не используйте!
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's ) exports атрибут.

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

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

javabuilder_jvm_flags

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

Ограниченный API, не используйте!
javacopts

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

Дополнительные параметры компилятора для этой библиотеки. При условии замены «Makevariable» и токенизации оболочки Bourne .

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

логическое значение; по умолчанию — 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, takenosideeffects и правила, начинающиеся с -keep. Другие параметры могут появляться только в proguard_specs android_binary , чтобы гарантировать нетавтологическое слияние.
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, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

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

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

Пример:


java_library(
    name = "lib",
    runtime_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, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

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

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

Пример:


java_library(
    name = "lib",
    runtime_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, add_exports, add_opens, args, bootclasspath, 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, neverlink, plugins, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, use_testrunner, visibility)

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

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

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

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

Примеры



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

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

Аргументы

Атрибуты
name

Имя ; необходимый

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

deps

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

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

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

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

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

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

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

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

data

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

Список файлов, необходимых этой библиотеке во время выполнения. Общие комментарии о data см. в разделе Типичные атрибуты, определенные большинством правил сборки .
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 можно использовать для указания конкретного альтернативного каталога для файлов ресурсов.

add_exports

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

Разрешите этой библиотеке доступ к данному module или package .

Это соответствует флагам javac и JVM --add-exports=.

add_opens

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

Разрешить этой библиотеке рефлексивный доступ к данному module или package .

Это соответствует флагам javac и JVM --add-opens=.

bootclasspath

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

Ограниченный API, не используйте!
classpath_resources

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

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

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

create_executable

логическое значение; по умолчанию — True

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

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

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

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

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

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

jvm_flags

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

Список флагов для встраивания в сценарий-оболочку, созданный для запуска этого двоичного файла. При условии замены $(location) и «Makevariable» , а также токенизации оболочки 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).

Соответствующий флаг --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

Нить; по умолчанию ""

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

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

логическое значение; по умолчанию — False

plugins

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

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

Нить; по умолчанию ""

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

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

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, атрибут запуска и связанный флаг --java_launcher будет проигнорирован для этой цели.

use_testrunner

логическое значение; по умолчанию True

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

java_package_configuration

Просмотреть источник правила
java_package_configuration(name, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, javacopts, output_licenses, packages, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

Конфигурация для применения к набору пакетов. Конфигурации могут быть добавлены в java_toolchain.javacopts s.

Пример:



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

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

packages

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

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

java_plugin

Просмотреть источник правила
java_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

java_plugin определяет плагины для компилятора Java, запускающегося Bazel. На данный момент единственным поддерживаемым видом плагинов являются процессоры аннотации. Правило java_library или java_binary может запускать плагины, в зависимости от них через атрибут plugins . java_library также может автоматически экспортировать плагины в библиотеки, которые напрямую зависят от него с использованием exported_plugins .

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

  • libname .jar : архив Java.

Аргументы идентичны java_library , за исключением добавления аргумента processor_class .

Аргументы

Атрибуты
name

Имя ; необходимый

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

deps

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

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

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

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

srcs

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

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

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

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

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

Исходные файлы типа .properties рассматриваются как ресурсы.

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

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

data

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

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

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

resources

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

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

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

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

add_exports

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

Позвольте этой библиотеке получить доступ к данному module или package .

Это соответствует Javac и JVM -Add-Exports = Flags.

add_opens

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

Позвольте этой библиотеке рефлексировать доступ к данному module или package .

Это соответствует javac и jvm-add-opens = flags.

bootclasspath

Этикетка ; По умолчанию None

Ограниченный API, не используйте!
generates_api

логическое значение; по умолчанию False

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

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

Предупреждение: этот атрибут влияет на производительность сборки, используйте его только в случае необходимости.

javabuilder_jvm_flags

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

Ограниченный API, не используйте!
javacopts

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

Дополнительные варианты компилятора для этой библиотеки. С учетом «создавать переменную» замену и токенизацию оболочки Бурн .

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

логическое значение; по умолчанию False

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

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

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

output_licenses

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

plugins

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

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

Нить; по умолчанию ""

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

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

Файлы, которые будут использоваться в качестве спецификации прогноза. Они будут описать набор спецификаций, которые будут использоваться прогидом. Если указано, они будут добавлены в любую цель android_binary в зависимости от этой библиотеки. Файлы, включенные здесь, должны иметь только идентификационные правила, а именно -dontnote, -dontwarn, предполагаемые меры и правила, которые начинаются с -пекту. Другие параметры могут появиться только в android_binary 's Proguard_specs, чтобы обеспечить неавтологические слияния.
resource_strip_prefix

Нить; по умолчанию ""

ПРЕДУПРЕЖДЕНИЕ ПРЕДУПРЕЖДЕНИЯ ЛИТАНИЯ от Java Resources.

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

java_runtime

Просмотреть источник правила
java_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, exec_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, 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 , CDS java_runtime Default упакована в герметическую развертывание.
hermetic_srcs

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

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

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

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

Этикетка ; По умолчанию None

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

Нить; по умолчанию ""

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

Этикетка ; По умолчанию None

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

Этикетка ; По умолчанию None

Файл Lib/Modules, необходимый для герметических развертываний.
output_licenses

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

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_javacopts, compatible_with, deprecation, deps_checker, distribs, exec_compatible_with, exec_properties, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_builtin_processors, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_worker_cancellation, javac_supports_worker_multiplex_sandboxing, javac_supports_workers, javacopts, jspecify_implicit_deps, jspecify_javacopts, jspecify_packages, jspecify_processor, jspecify_processor_class, jspecify_stubs, jvm_opts, licenses, misc, oneversion, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, proguard_allowlister, reduced_classpath_incompatible_processors, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, toolchains, tools, turbine_data, turbine_jvm_opts, visibility, xlint)

Определяет конфигурацию для Java Compiler. Какой набор инструментов можно использовать с помощью аргумента 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

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

Java Target BootClassPath. Соответствует флагу Javac -bootclasspath.
compatible_javacopts

нулевой; по умолчанию {}

Внутренний API, не используйте!
deps_checker

Этикетка ; По умолчанию None

Метка импортируемого jar.
forcibly_disable_header_compilation

логическое значение; по умолчанию False

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

Этикетка ; По умолчанию None

Ярлык Genclass Deploy Jar.
header_compiler

Этикетка ; По умолчанию None

Ярлык заголовочного компилятора. Требуется, если -Java_header_compilation включена.
header_compiler_builtin_processors

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

Внутренний API, не используйте!
header_compiler_direct

Этикетка ; По умолчанию None

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

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

ijar

Этикетка ; По умолчанию None

Ярлык исполняемого ijar.
jacocorunner

Этикетка ; По умолчанию None

Ярлык Jacocoveragerunner развертывания JAR.
java_runtime

Этикетка ; По умолчанию None

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

Этикетка ; По умолчанию None

Ярлык Javabuilder развертывает JAR.
javabuilder_data

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

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

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

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

логическое значение; по умолчанию True

Правда, если Javabuilder поддерживает работу как мультиплексный стойкий работник, ложно, если это не так.
javac_supports_worker_cancellation

логическое значение; по умолчанию True

Правда, если Javabuilder поддерживает отмену постоянных работников, ложь, если это не так.
javac_supports_worker_multiplex_sandboxing

логическое значение; по умолчанию False

Верно, если Javabuilder поддерживает работу как мультиплексный стойкий работник с песочницей, False, если это не так.
javac_supports_workers

логическое значение; по умолчанию True

Правда, если Javabuilder поддерживает бег как постоянный работник, ложь, если это не так.
javacopts

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

Список дополнительных аргументов для компилятора Java. Пожалуйста, обратитесь к документации компилятора Java для обширного списка возможных флагов компилятора Java.
jspecify_implicit_deps

Этикетка ; По умолчанию None

Экспериментальный, не используйте!
jspecify_javacopts

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

Экспериментальный, не используйте!
jspecify_packages

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

Экспериментальный, не используйте!
jspecify_processor

Этикетка ; По умолчанию None

Экспериментальный, не используйте!
jspecify_processor_class

Нить; по умолчанию ""

Экспериментальный, не используйте!
jspecify_stubs

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

Экспериментальный, не используйте!
jvm_opts

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

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

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

Устроенный: вместо этого используйте Javacopts
oneversion

Этикетка ; По умолчанию None

Метка двухэтажного применения двоичного принуждения.
oneversion_allowlist_for_tests

Этикетка ; По умолчанию None

Метка One-версии AllistList для тестов.
oneversion_whitelist

Этикетка ; По умолчанию None

Метка One-версии AllistList.
package_configuration

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

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

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

Ярлык прогиарда Allisterlister.
reduced_classpath_incompatible_processors

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

Внутренний API, не используйте!
singlejar

Этикетка ; По умолчанию None

Этикетка из одного JAR развертывает JAR.
source_version

Нить; по умолчанию ""

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

Нить; по умолчанию ""

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

Этикетка ; По умолчанию None

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

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

Метки инструментов, доступные для метки-экспертизы в jvm_opts.
turbine_data

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

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

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

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

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

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