Как получить атрибуты правила рабочего пространства Bazel, используя аспекты
Я пишу инструмент для пост-сборки, который синтезирует файлы maven pom после сборки bazel. Я использую аспекты для сбора соответствующей информации о различных целях.
Одна из функций заключается в добавлении внешних jar-зависимостей в соответствующие файлы pom.
Предположим, что наше рабочее пространство содержит следующую цель:
maven_jar(
name = "com_google_guava_guava",
artifact = "com.google.guava:guava:19.0",
)
и один из наших файлов BUILD содержит цель, которая имеет гуаву в качестве зависимости
scala_library(
name = "somename",
srcs = glob(["*.scala"]) + glob(["*.java"]),
deps = [
"@com_google_guava_guava//jar:file" ,
],
В аспекте для этой цели, как можно получить атрибуты maven_jar, в частности, артефакт?
(Самое близкое, что я смог получить, было:
[InputFileConfiguredTarget(@com_google_guava_guava//jar:guava-19.0.jar)]
С помощью ctx.rule.attr.srcs
)
Я мог бы, вероятно, просто проанализировать внешние jar- объекты рабочей области и получить карту от имени до артефакта как гибридное решение,
но гораздо более элегантным решением было бы обеспечить сам артефакт. Является ли это возможным?
1 ответ
Атрибут "Артефакт" является атрибутом правила хранилища, недоступного в Жаворонке. Артефакт выглядит как информация, которая может быть каким-то образом интегрирована в цель jar, не стесняйтесь подать запрос на функцию на https://github.com/bazelbuild/bazel/issues/new, с указанием причины, по которой вам это нужно.