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

Моя цель - написать новое явное правило, которое эквивалентно внутреннему правилу, но с небольшой модификацией (встроить определенные зависимости, но не другие).

Предположим, у меня есть такое правило:

      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. Действительно, в настоящее время продолжается проект по прозрачной замене встроенных правил Bazel Java реализацией Starlark.

Другие вопросы по тегам