Можно ли использовать запрос bazel для вывода полного синтаксиса неявного (или любого) правила?

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