【问题标题】:How to retrieve the attributes of a Bazel workspace rule using aspects如何使用方面检索 Bazel 工作区规则的属性
【发布时间】:2017-05-30 11:26:39
【问题描述】:

我正在编写一个构建后的工具,用于在 bazel 构建后合成 maven pom 文件。我正在使用 aspects 来收集各种目标的相关信息。

其中一项功能涉及将外部 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" , 
],

在此目标的 aspect 中,如何检索 maven_jar 的属性,特别是 artifact

(我能得到的最接近的是:

[InputFileConfiguredTarget(@com_google_guava_guava//jar:guava-19.0.jar)]

使用ctx.rule.attr.srcs)

我可能只是解析 workspace 外部 jarstargets 并获取从名称到 artifact 的映射作为混合解决方案,

但更优雅的解决方案是让切面自己提供工件。有可能吗?

【问题讨论】:

    标签: bazel bazel-aspect


    【解决方案1】:

    “artifact”属性是存储库规则的属性,无法从 Skylark 访问。该工件似乎是一种可以以某种方式集成到 jar 目标中的信息,请随时向https://github.com/bazelbuild/bazel/issues/new 提出功能请求,并说明您需要它的原因。

    【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    相关资源
    最近更新 更多