Как получить атрибуты правила рабочего пространства 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, с указанием причины, по которой вам это нужно.

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