#java #bazel #bazel-java
Вопрос:
Моя цель-написать новое явное правило, эквивалентное внутреннему правилу, но с небольшой модификацией (встраивать определенные зависимости, но не другие).
Предположим, у меня есть правило, подобное следующему:
java_binary(
name = "cipher_jar",
srcs = glob([
"*.java",
]),
...
)
Существует неявное правило, которое выглядит следующим образом:
bazel query "//cipher:cipher_jar_deploy.jar"
Есть ли что-то query
, что я могу запустить, чтобы заставить bazel вывести что-то, эквивалентное java_binary
приведенному выше правилу для этого неявного правила?
Похоже, использование --output=build
просто возвращает мне исходное правило, в то время как мне нужно правило, которое явно указывает bazel на встраивание зависимостей.
Ответ №1:
Логика встроенных правил Bazel Java, таких как java_binary
и java_library
, написана на Java и находится в двоичном файле Bazel. Однако существует API Starlark для многих примитивных операций, используемых правилами Java. Они могут быть использованы для создания пользовательских правил Java. Действительно, в настоящее время ведется проект по прозрачной замене встроенных правил Java Bazel реализацией Starlark.