如何在Bazel中强制重建包以测量构建时间

如何在Bazel中强制重建包以测量构建时间,bazel,Bazel,我目前正在尝试测量用不同的--spawn_策略构建“api”项目所需的bazel build//api/…时间。 我很难做到这一点,因为只要我不接触源文件,Bazel就不会重建任何东西 我能够通过编辑“api”项目中的所有文件来强制重建,但重复这样做很麻烦 强制Bazel重建以便我可以测量存储库的构建时间的最佳方法是什么 最好,我想使用类似于bazel build//api/--有些选项强制重建或类似的东西。有点脏,但您可以使用它来更改生成环境并使所有操作无效。发件人: 环境变量被认为是行动的重

我目前正在尝试测量用不同的
--spawn_策略构建“api”项目所需的
bazel build//api/…
时间。 我很难做到这一点,因为只要我不接触源文件,Bazel就不会重建任何东西

我能够通过编辑“api”项目中的所有文件来强制重建,但重复这样做很麻烦

强制Bazel重建以便我可以测量存储库的构建时间的最佳方法是什么


最好,我想使用类似于
bazel build//api/--有些选项强制重建
或类似的东西。

有点脏,但您可以使用它来更改生成环境并使所有操作无效。发件人:

环境变量被认为是行动的重要组成部分。换句话说,如果一个操作在不同的环境中被调用,那么它将产生不同的输出;特别是,如果有效环境发生变化,则无法获取以前缓存的值

还(来自):

[…]可以使用--action_env标志从命令行强制执行这些环境变量的值(但该标志将使构建的每个操作无效)

仅设置一个随机变量就足够了:

bazel build--action_env=“avariable=1”:mytarget >bazel构建——操作_env=“avariable=2”:mytarget > ...
如果删除
api
包及其子包的输出目录中的所有内容(应位于
bazel bin
符号链接下),bazel将重新运行生成这些内容的所有操作,而不会运行在其他包中生成内容的任何操作。这也应该避免重新运行分析阶段,更改
config\u设置
s或
--操作环境
就可以了。

谢谢!这已经比我目前的方法好得多了。但是,我希望为所有其他内容保留缓存,除了
//api/…
。(依赖关系树中我希望保留缓存的许多其他依赖关系)有没有办法让
--action_env
只影响依赖关系树的一部分?您可以尝试使用
//api
中的
配置_setting
对不同设置使用不同的env变量值,请看,我已经决定使用以下风格来获得重建;)<代码>--action_env=SHIT=$(date-Ins)