从Skylark规则访问maven_jar.artifact的值

时间:2018-01-26 23:15:52

标签: java maven bazel

在我的Skylark规则中,我正在查看我的所有deps - 其中一些是我的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

1 个答案:

答案 0 :(得分:2)

我认为您需要为此提交功能请求: 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的内容在分析时(在规则实现中)不可用)