建议在Bazel方面积累数据输出文件的策略



我正在编写一个构建工具,该工具需要目标的JAR文件列表的位置。对于这些位置,我有一个在目标列表上运行的方面(使用 - 方面为每个目标列表(,并为每个目标找到JAR文件路径。

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

,但这将意味着我需要分别浏览每个jar.txt文件以获取位置。

有没有一种方法可以在一个文件中累积JAR文件路径?
类似:

  1. 尝试在该方面使用Append命令写入同一输出文件夹。我不确定是否可以使用共享的输出文件夹。

  2. 创建一个取决于所有相关目标的合成目标,然后在此目标上运行一个方面并积累罐子,仅在递归后才将它们写在根部。

是1.或2.有效的选项?
在Bazel方面积累数据的推荐策略是什么?

bazel不提供Skylark中的facitlities,用于在目标图中累积与彼此无关的目标之间的信息(例如,命令行中彼此之间提到的信息(。

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

另一种可能性是告诉巴泽尔使用--experimental_build_event_{json,text,binary}_file编写构建事件(包括指定构建模式的所有目标的所有输出扩展到(。("实验"将很快删除。(。文件包含此消息的实例:

https://github.com/bazelbuild/bazel/blob/master/src/src/main/java/java/java/google/google/google/devtools/build/lib/build/buildeventstream/proto/proto/build_event_event_event_event_event_vent_stream.stream.proto

natan,

如果我正确理解,您想将每个方面节点的信息传播到一个结果中。为此,请在您的方面规则实现中构建及物集,并通过"提供者"机制[^1]通过它。我写了一些关于巴泽尔方面的示例,也许您会发现它有用[^2]。

  1. https://github.com/pcj/bazel_aspects/blob/master/aspects.bzl#l94-l94-l104

  2. https://github.com/pcj/bazel_aspects

相关内容

  • 没有找到相关文章

最新更新