来自 Skylark 规则的 maven_jar.artifact 的访问值

Access value of maven_jar.artifact from Skylark rule

在我的 Skylark 规则中,我正在查看我的所有部门 - 其中一些是我的 WORKSPACE 文件中定义的 maven_jar 个实例。对于那些,我想访问 maven_jar.artifact 的值,但据我所知它不可用。有可能达到那个值吗?

例如,如果我的 WORKSPACE 有:

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

我认为您需要为此提交功能请求: 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 的所有罐子,但无论哪种方式,jar 的内容在分析时不可用(在规则实施中))