bazel的--build_event_json_file参数会截断还是追加现有文件?
Bazel --build_event_json_file 写入行为说明
默认情况下,bazel build 命令使用 --build_event_json_file 参数时,始终会截断目标文件的原有内容,官方没有提供直接追加写入的内置配置开关。
如果你需要留存多次构建的所有事件数据,可以用以下两种方案实现:
- 方案1:单次构建指定独立输出文件,完成后合并
每次调用bazel时指定不同的事件文件路径,比如第一次proto编译用--build_event_json_file=build_events_proto.json,第二次主体构建用--build_event_json_file=build_events_main.json。所有构建任务执行完成后,直接按构建顺序拼接多个文件的内容即可,该格式本身为每行一个独立JSON对象,拼接后不会出现格式错误。 - 方案2:将构建事件输出到标准流,手动追加到目标文件
把参数值设置为标准输出路径,再通过shell的追加运算符将内容写入同一个文件,示例命令如下:
如果担心其他标准输出内容污染事件数据,可以搭配# 编译proto,事件内容追加到总文件 bazel build //your_proto_targets/... --build_event_json_file=/dev/stdout >> all_build_events.json # 执行主体构建,事件内容继续追加到总文件 bazel build //your_main_targets/... --build_event_json_file=/dev/stdout >> all_build_events.json--noshow_progress、--noshow_loading_progress等参数关闭冗余日志输出,确保写入文件的只有纯构建事件内容。
内容的提问来源于stack exchange,提问作者Joshua Kugler
相关产品推荐
相关产品推荐

