Правила
- 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 и параметры для загрузки собственных библиотек.Банка развертывания содержит все классы, которые мог бы найти загрузчик классов, который просматривал путь к классам из сценария-оболочки двоичного файла от начала до конца. Он также содержит собственные библиотеки, необходимые для зависимостей. Они автоматически загружаются в 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 | Список ярлыков ; по умолчанию Компилируются исходные файлы типа Исходные файлы типа Правила: если правило (обычно Этот аргумент требуется почти всегда, за исключением случаев, когда атрибут |
resources | Список ярлыков ; по умолчанию Если указаны ресурсы, они будут объединены в jar вместе с обычными файлами Ресурсы могут быть исходными файлами или сгенерированными файлами. |
classpath_resources | Список ярлыков ; по умолчанию Список ресурсов, которые должны располагаться в корне дерева Java. Единственная цель этого атрибута — поддержка сторонних библиотек, которые требуют, чтобы их ресурсы находились в пути к классам именно как |
create_executable | логическое значение; не настраиваемый ; по умолчанию — java_single_jar . |
deploy_env | Список ярлыков ; по умолчанию java_binary , которые представляют среду развертывания этого двоичного файла. Установите этот атрибут при создании плагина, который будет загружен другим java_binary .Установка этого атрибута исключает все зависимости из пути к классам среды выполнения (и jar-файла развертывания) этого двоичного файла, которые являются общими для этого двоичного файла и целевых объектов, указанных в deploy_env . |
deploy_manifest_lines | Список строк; по умолчанию META-INF/manifest.mf , созданный для цели *_deploy.jar . Содержимое этого атрибута не подлежит замене «Создать переменную» . |
javacopts | Список строк; по умолчанию Эти параметры компилятора передаются в javac после глобальных параметров компилятора. |
jvm_flags | Список строк; по умолчанию Скрипт-оболочка для двоичного файла Java включает определение CLASSPATH (чтобы найти все зависимые файлы jar) и вызывает правильный интерпретатор Java. Командная строка, сгенерированная сценарием-оболочкой, включает имя основного класса, за которым следует символ Обратите внимание, что этот атрибут не влияет на выходные данные |
launcher | Этикетка ; по умолчанию — bin/java включенной в JDK. Целью должен быть cc_binary . В качестве значения этого атрибута можно указать любой cc_binary , реализующий API вызова Java .По умолчанию Bazel будет использовать обычный модуль запуска JDK (bin/java или java.exe). Соответствующий флаг Обратите внимание, что ваши собственные зависимости (C++, SWIG, JNI) будут построены по-разному в зависимости от того, используете ли вы средство запуска JDK или другое средство запуска:
При использовании любого средства запуска, отличного от средства запуска JDK по умолчанию, формат вывода |
main_class | Нить; по умолчанию main() который будет использоваться в качестве точки входа. Если правило использует эту опцию, список srcs=[...] ему не нужен. Таким образом, с помощью этого атрибута можно создать исполняемый файл из библиотеки Java, которая уже содержит один или несколько методов main() . Значением этого атрибута является имя класса, а не исходный файл. Класс должен быть доступен во время выполнения: он может быть скомпилирован по этому правилу (из |
plugins | Список ярлыков ; по умолчанию java_plugin указанный в этом атрибуте, будет запускаться при каждом построении этого правила. Библиотека также может наследовать плагины от зависимостей, использующих exported_plugins . Ресурсы, сгенерированные плагином, будут включены в итоговый jar-файл этого правила. |
resource_jars | Список ярлыков ; по умолчанию |
resource_strip_prefix | Нить; по умолчанию Если этот префикс пути указан, он удаляется из каждого файла в атрибуте |
runtime_deps | Список ярлыков ; по умолчанию deps , они появятся в пути к классам во время выполнения, но, в отличие от них, не в пути к классам во время компиляции. Здесь должны быть перечислены зависимости, необходимые только во время выполнения. Инструменты анализа зависимостей должны игнорировать цели, которые появляются как в runtime_deps , так и deps . |
stamp | Целое число; по умолчанию -
Штампованные двоичные файлы не пересобираются, если их зависимости не изменяются. |
use_launcher | логическое значение; по умолчанию — Если для этого атрибута установлено значение false, атрибут средства запуска и связанный с ним флаг |
use_testrunner | логическое значение; по умолчанию — 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 | Список ярлыков ; по умолчанию |
data | Список ярлыков ; по умолчанию |
add_exports | Список строк; по умолчанию module или package .Это соответствует флагам javac и JVM --add-exports=. |
add_opens | Список строк; по умолчанию module или package .Это соответствует флагам javac и JVM --add-opens=. |
constraints | Список строк; по умолчанию |
exports | Список ярлыков ; по умолчанию |
jars | Список ярлыков ; необходимый Список файлов JAR, предоставляемых целям Java, которые зависят от этой цели. |
neverlink | логическое значение; по умолчанию — tools.jar для всего, что работает на стандартном JDK. |
proguard_specs | Список ярлыков ; по умолчанию android_binary в зависимости от этой библиотеки. Файлы, включенные сюда, должны иметь только идемпотентные правила, а именно -dontnote, -dontwarn, takenosideeffects и правила, начинающиеся с -keep. Другие параметры могут появляться только в proguard_specs android_binary , чтобы гарантировать нетавтологическое слияние. |
runtime_deps | Список ярлыков ; по умолчанию |
srcjar | Этикетка ; по умолчанию — |
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, созданные по правилам Напротив, целевые объекты в атрибуте |
srcs | Список ярлыков ; по умолчанию Компилируются исходные файлы типа Исходные файлы типа Правила: если правило (обычно Исходные файлы типа Все остальные файлы игнорируются, если существует хотя бы один файл описанного выше типа. В противном случае выдается ошибка. Этот аргумент требуется почти всегда, за исключением случаев, когда вы указываете аргумент |
data | Список ярлыков ; по умолчанию data см. в разделе Типичные атрибуты, определенные большинством правил сборки . При создании |
resources | Список ярлыков ; по умолчанию Ресурсы могут быть исходными файлами или сгенерированными файлами. Если указаны ресурсы, они будут объединены в jar вместе с обычными файлами |
add_exports | Список строк; по умолчанию module или package .Это соответствует флагам javac и JVM --add-exports=. |
add_opens | Список строк; по умолчанию module или package .Это соответствует флагам javac и JVM --add-opens=. |
bootclasspath | Этикетка ; по умолчанию — |
exported_plugins | Список ярлыков ; по умолчанию java_plugin (например, обработчиков аннотаций) для экспорта в библиотеки, которые напрямую зависят от этой библиотеки. Указанный список |
exports | Список ярлыков ; по умолчанию Если разместить здесь правила листинга, они станут доступными для родительских правил, как если бы родительские правила явно зависели от этих правил. Это не относится к обычным (неэкспортируемым) Резюме: правило X может получить доступ к коду в Y , если между ними существует путь зависимости, который начинается с ребра Предположим, что A зависит от B , а B зависит от C. В этом случае C является транзитивной зависимостью A, поэтому изменение исходного кода C и пересборка A приведет к правильному восстановлению всего. Однако A не сможет использовать классы в C. Чтобы это сделать, либо A должен объявить C в своем Закрытие экспортированных библиотек доступно всем прямым родительским правилам. Возьмем немного другой пример: A зависит от B, B зависит от C и D, а также экспортирует C, но не D. Теперь A имеет доступ к C, но не к D. Теперь, если C и D экспортировали некоторые библиотеки, C' и D' соответственно, A мог получить доступ только к C', но не к D'. Важно: экспортированное правило не является обычной зависимостью. Возвращаясь к предыдущему примеру, если B экспортирует C и хочет также использовать C, он также должен указать его в своем собственном |
javabuilder_jvm_flags | Список строк; по умолчанию |
javacopts | Список строк; по умолчанию Эти параметры компилятора передаются в javac после глобальных параметров компилятора. |
neverlink | логическое значение; по умолчанию — tools.jar для всего, что работает на стандартном JDK. Обратите внимание, что Если библиотека времени выполнения отличается от библиотеки компиляции, вы должны убедиться, что она отличается только в тех местах, которые JLS запрещает компиляторам встраивать (и это должно сохраняться для всех будущих версий JLS). |
plugins | Список ярлыков ; по умолчанию java_plugin указанный в этом атрибуте, будет запускаться при каждом построении этого правила. Библиотека также может наследовать плагины от зависимостей, использующих exported_plugins . Ресурсы, сгенерированные плагином, будут включены в итоговый jar-файл этого правила. |
proguard_specs | Список ярлыков ; по умолчанию android_binary в зависимости от этой библиотеки. Файлы, включенные сюда, должны иметь только идемпотентные правила, а именно -dontnote, -dontwarn, takenosideeffects и правила, начинающиеся с -keep. Другие параметры могут появляться только в proguard_specs android_binary , чтобы гарантировать нетавтологическое слияние. |
resource_strip_prefix | Нить; по умолчанию Если этот префикс пути указан, он удаляется из каждого файла в атрибуте |
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 | Список ярлыков ; по умолчанию Компилируются исходные файлы типа Исходные файлы типа Правила: если правило (обычно Этот аргумент требуется почти всегда, за исключением случаев, когда атрибут |
data | Список ярлыков ; по умолчанию data см. в разделе Типичные атрибуты, определенные большинством правил сборки . |
resources | Список ярлыков ; по умолчанию Ресурсы могут быть исходными файлами или сгенерированными файлами. Если указаны ресурсы, они будут объединены в jar вместе с обычными файлами |
add_exports | Список строк; по умолчанию module или package .Это соответствует флагам javac и JVM --add-exports=. |
add_opens | Список строк; по умолчанию module или package .Это соответствует флагам javac и JVM --add-opens=. |
bootclasspath | Этикетка ; по умолчанию — |
classpath_resources | Список ярлыков ; по умолчанию Список ресурсов, которые должны располагаться в корне дерева Java. Единственная цель этого атрибута — поддержка сторонних библиотек, которые требуют, чтобы их ресурсы находились в пути к классам именно как |
create_executable | логическое значение; по умолчанию — java_single_jar . |
deploy_manifest_lines | Список строк; по умолчанию META-INF/manifest.mf , созданный для цели *_deploy.jar . Содержимое этого атрибута не подлежит замене «Создать переменную» . |
javacopts | Список строк; по умолчанию Эти параметры компилятора передаются в javac после глобальных параметров компилятора. |
jvm_flags | Список строк; по умолчанию Скрипт-оболочка для двоичного файла Java включает определение CLASSPATH (чтобы найти все зависимые файлы jar) и вызывает правильный интерпретатор Java. Командная строка, сгенерированная сценарием-оболочкой, включает имя основного класса, за которым следует символ Обратите внимание, что этот атрибут не влияет на выходные данные |
launcher | Этикетка ; по умолчанию — bin/java включенной в JDK. Целью должен быть cc_binary . В качестве значения этого атрибута можно указать любой cc_binary , реализующий API вызова Java .По умолчанию Bazel будет использовать обычный модуль запуска JDK (bin/java или java.exe). Соответствующий флаг Обратите внимание, что ваши собственные зависимости (C++, SWIG, JNI) будут построены по-разному в зависимости от того, используете ли вы средство запуска JDK или другое средство запуска:
При использовании любого средства запуска, отличного от средства запуска JDK по умолчанию, формат вывода |
main_class | Нить; по умолчанию main() который будет использоваться в качестве точки входа. Если правило использует эту опцию, список srcs=[...] ему не нужен. Таким образом, с помощью этого атрибута можно создать исполняемый файл из библиотеки Java, которая уже содержит один или несколько методов main() . Значением этого атрибута является имя класса, а не исходный файл. Класс должен быть доступен во время выполнения: он может быть скомпилирован по этому правилу (из |
neverlink | логическое значение; по умолчанию — |
plugins | Список ярлыков ; по умолчанию java_plugin указанный в этом атрибуте, будет запускаться при каждом построении этого правила. Библиотека также может наследовать плагины от зависимостей, использующих exported_plugins . Ресурсы, сгенерированные плагином, будут включены в итоговый jar-файл этого правила. |
resource_strip_prefix | Нить; по умолчанию Если этот префикс пути указан, он удаляется из каждого файла в атрибуте |
runtime_deps | Список ярлыков ; по умолчанию deps , они появятся в пути к классам во время выполнения, но, в отличие от них, не в пути к классам во время компиляции. Здесь должны быть перечислены зависимости, необходимые только во время выполнения. Инструменты анализа зависимостей должны игнорировать цели, которые появляются как в runtime_deps , так и deps . |
stamp | Целое число; по умолчанию
Штампованные двоичные файлы не пересобираются, если их зависимости не изменяются. |
test_class | Нить; по умолчанию По умолчанию, если этот аргумент не определен, то используется режим устаревшего, и вместо этого используются тестовые аргументы. Установите флаг Этот атрибут указывает название класса Java, который будет управлять этим тестом. Редко нужно установить это. Если этот аргумент будет опущен, он будет выведен с использованием Для JUNIT3 класс тестирования должен быть либо подклассом Этот атрибут позволяет нескольким правилам |
use_launcher | логическое значение; по умолчанию Если этот атрибут установлен на False, атрибут запуска и связанный флаг |
use_testrunner | логическое значение; по умолчанию 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 | Список струн; по умолчанию |
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 в типичных атрибутах, определенных большинством правил сборки . Банки, построенные в соответствии с правилами В отличие от этого, цели в атрибуте |
srcs | Список ярлыков ; по умолчанию Исходные файлы типа Исходные файлы типа Правила: если правило (обычно Исходные файлы типа Все остальные файлы игнорируются, если есть хотя бы один файл типа файла, описанный выше. В противном случае возникает ошибка. Этот аргумент почти всегда требуется, за исключением случаев, когда вы указываете аргумент |
data | Список ярлыков ; по умолчанию data в типичных атрибутах, определенных большинством правил сборки . При создании |
resources | Список ярлыков ; по умолчанию Ресурсы могут быть исходными файлами или сгенерированными файлами. Если указаны ресурсы, они будут в комплекте в банке вместе с обычными файлами |
add_exports | Список струн; по умолчанию module или package .Это соответствует Javac и JVM -Add-Exports = Flags. |
add_opens | Список струн; по умолчанию module или package .Это соответствует javac и jvm-add-opens = flags. |
bootclasspath | Этикетка ; По умолчанию |
generates_api | логическое значение; по умолчанию Если правило использует процессор, генерирующий API-генерации, другие правила в зависимости от него могут ссылаться на сгенерированный код, только если их действия компиляции запланированы после правила генерирования. Этот атрибут инструктирует Bazel ввести ограничения планирования, когда включена -Java_header_compilation. Предупреждение: этот атрибут влияет на производительность сборки, используйте его только в случае необходимости. |
javabuilder_jvm_flags | Список струн; по умолчанию |
javacopts | Список струн; по умолчанию Эти варианты компилятора передаются в Javac после глобальных вариантов компилятора. |
neverlink | логическое значение; по умолчанию tools.jar Обратите внимание, что Если библиотека времени выполнения отличается от библиотеки компиляции, вы должны убедиться, что она отличается только в местах, которые JLS запрещает компиляторам встроить (и это должно содержать для всех будущих версий JLS). |
output_licenses | Список струн; по умолчанию |
plugins | Список ярлыков ; по умолчанию java_plugin указанный в этом атрибуте, будет запущен всякий раз, когда это правило будет построено. Библиотека также может наследовать плагины от зависимостей, которые используют exported_plugins . Ресурсы, созданные плагином, будут включены в полученную банку этого правила. |
processor_class | Нить; по умолчанию |
proguard_specs | Список ярлыков ; по умолчанию android_binary в зависимости от этой библиотеки. Файлы, включенные здесь, должны иметь только идентификационные правила, а именно -dontnote, -dontwarn, предполагаемые меры и правила, которые начинаются с -пекту. Другие параметры могут появиться только в android_binary 's Proguard_specs, чтобы обеспечить неавтологические слияния. |
resource_strip_prefix | Нить; по умолчанию Если указано, этот префикс пути очищается из каждого файла в атрибуте |
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 | Этикетка ; По умолчанию java_runtime . Когда герметика включена для цели java_binary , и если цель не предоставляет свой собственный архив CDS, указав атрибут classlist , CDS java_runtime Default упакована в герметическую развертывание. |
hermetic_srcs | Список ярлыков ; по умолчанию |
hermetic_static_libs | Список ярлыков ; по умолчанию |
java | Этикетка ; По умолчанию |
java_home | Нить; по умолчанию srcs и java должны быть пустыми. |
lib_ct_sym | Этикетка ; По умолчанию --release . Если не указано, и в srcs есть ровно один файл, чей путь заканчивается с /lib/ct.sym , используется этот файл. |
lib_modules | Этикетка ; По умолчанию |
output_licenses | Список струн; по умолчанию |
version | Целое число; по умолчанию 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_opts | Список струн; по умолчанию |
android_lint_package_configuration | Список ярлыков ; по умолчанию |
android_lint_runner | Этикетка ; По умолчанию |
bootclasspath | Список ярлыков ; по умолчанию |
compatible_javacopts | нулевой; по умолчанию |
deps_checker | Этикетка ; По умолчанию |
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 | Список струн; по умолчанию |
misc | Список струн; по умолчанию |
oneversion | Этикетка ; По умолчанию |
oneversion_allowlist_for_tests | Этикетка ; По умолчанию |
oneversion_whitelist | Этикетка ; По умолчанию |
package_configuration | Список ярлыков ; по умолчанию |
proguard_allowlister | Этикетка ; по умолчанию |
reduced_classpath_incompatible_processors | Список струн; по умолчанию |
singlejar | Этикетка ; По умолчанию |
source_version | Нить; по умолчанию |
target_version | Нить; по умолчанию |
timezone_data | Этикетка ; По умолчанию |
tools | Список ярлыков ; по умолчанию |
turbine_data | Список ярлыков ; по умолчанию |
turbine_jvm_opts | Список струн; по умолчанию |
xlint | Список струн; по умолчанию |