Доступ к значению maven_jar.artifact из правила Skylark

В моем правиле Skylark я просматриваю все свои зависимости — некоторые из них являются экземплярами maven_jar, определенными в моем файле WORKSPACE. Для них я хотел бы получить доступ к значению maven_jar.artifact, но, насколько я могу судить, он недоступен. Можно ли получить такое значение?

Например, если в моем РАБОЧЕМ ОБЛАСТИ есть:

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

И мой файл BUILD имеет что-то вроде этого:

my_rule(
    name = "foo",
    deps = ["@com_google_guava_guava//jar"]         
)

В реализации my_rule хотелось бы получить значение com.google.guava:guava:20.0.


person Simon    schedule 26.01.2018    source источник


Ответы (1)


Я думаю, вам нужно будет отправить запрос функции для этого: https://github.com/bazelbuild/bazel/issues/new

Экземпляр правила maven_jar в файле рабочей области недоступен для правил в файлах BUILD, доступны только правила, созданные правилом рабочей области (т. е. @com_google_guava_guava//jar). По моему мнению, maven_jar должен был сгенерировать правило в рабочей области jar, у которого есть атрибут со значением artifact, и этому правилу нужно будет создать поставщика, содержащего это значение, для использования другими правилами.

(В банке действительно есть META-INF/maven/com.google.guava/guava/pom.xml, который, кажется, содержит нужную вам информацию, но я не знаю, можете ли вы полагаться на это для всех банок из maven, но в любом случае содержимое банки не доступно во время анализа (в рамках реализации правила))

person ahumesky    schedule 27.01.2018