在bazel方面输出文件中积累数据的推荐策略

在bazel方面输出文件中积累数据的推荐策略,bazel,bazel-aspect,Bazel,Bazel Aspect,我正在编写一个构建后工具,它需要目标jar文件列表的位置。 对于这些位置,我有一个在目标列表上运行的方面(分别针对每个目标使用--aspects),并获取每个目标的jar文件路径 我已设法在每个目标的输出文件夹中的自定义输出文件(例如jar.txt)中获取每个jar文件路径 但这意味着我需要分别检查每个jar.txt文件以获得位置 有没有办法将jar文件路径累积到单个文件中? 比如: 尝试使用方面中的append命令写入同一输出文件夹。我不确定是否可以共享输出文件夹 创建一个依赖于所有相关目标的

我正在编写一个构建后工具,它需要目标jar文件列表的位置。 对于这些位置,我有一个在目标列表上运行的方面(分别针对每个目标使用--aspects),并获取每个目标的jar文件路径

我已设法在每个目标的输出文件夹中的自定义输出文件(例如jar.txt)中获取每个jar文件路径

但这意味着我需要分别检查每个jar.txt文件以获得位置

有没有办法将jar文件路径累积到单个文件中?
比如:

  • 尝试使用方面中的append命令写入同一输出文件夹。我不确定是否可以共享输出文件夹

  • 创建一个依赖于所有相关目标的合成目标,然后在此目标上运行一个方面并累积JAR,并且仅在递归返回后在根目录下写入它们

  • 是1。或2。有效选项?
    在bazel方面输出文件中积累数据的推荐策略是什么

    如果我理解正确,那么您希望将来自每个方面节点的信息传递到单个结果中。为此,请在方面规则实现中构建可传递集,并通过“提供程序”机制传递它[^1]。我写了一些关于bazel方面的例子,也许你会发现它很有用[^2]


  • Bazel在Skylark中不提供在目标图中彼此不相关的目标之间积累信息的工具(例如,在命令行中彼此相邻的目标)

    一种可能是编写一个云雀规则,该规则取决于您通常在命令行中提到的所有目标,并构建了该规则;该规则将能够将每个Java目标的类路径整理成单个文件

    另一种可能是告诉Bazel使用
    --experimental_build_event{json,text,binary}文件将构建事件(包括指定构建模式扩展到的所有目标的所有输出)写入文件。(即将删除“实验性”选项。)。这些文件包含此消息的实例:


    Paul,方面访问的目标不是依赖关系树的一部分。这就是为什么我建议创建一个依赖于所有真实目标的合成目标,然后按照您的建议将数据传播到它。我的问题是,创建合成目标是否不是一种气味…,例如,我想访问m0中的所有目标,并找到它们的所有罐子位置