Как получить атрибуты правила рабочей области Bazel с помощью аспектов

Я пишу инструмент для пост-сборки, который синтезирует файлы pom maven после сборки bazel. Я использую аспекты для сбора соответствующей информации о различных целях.

Одна из функций включает добавление внешних зависимостей jar к соответствующим файлам pom.

Предположим, наша рабочая область содержит следующую цель:

maven_jar(
 name = "com_google_guava_guava",
 artifact = "com.google.guava:guava:19.0",
)

и один из наших файлов BUILD содержит цель, у которой в качестве зависимости guava

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-файлы target и получить карту от имени до артефакта в качестве гибридного решения,

но гораздо более элегантным решением было бы, чтобы аспект предоставлял артефакт сам по себе. Является ли это возможным?


person Natan    schedule 30.05.2017    source источник


Ответы (1)


Атрибут «артефакт» - это атрибут правила репозитория, который недоступен из Skylark. Артефакт выглядит как информация, которую можно каким-то образом интегрировать в цель jar, не стесняйтесь отправлять запрос функции по адресу https://github.com/bazelbuild/bazel/issues/new с указанием причины, по которой вам это нужно.

person Damien Martin-Guillerez    schedule 02.06.2017
comment
Спасибо, Дэмиен, за разъяснения. Я открыл запрос функции. - person Natan; 04.06.2017