intellij-idea - 为什么每当在 IntelliJ 和命令行之间切换时 Bazel 都会进行完全重建?

标签 intellij-idea bazel

对于同一个项目,我都在 the Bazel IntelliJ plugin 工作和命令行。

每当我从 IntelliJ 中“同步项目与 BUILD 文件”时,或者做一个新的 bazel build从命令行,无论我最后做哪一个,都会迫使另一个完全重建我的项目(有 100 个目标)。

例如,如果我从 IntelliJ 中运行一个测试,然后从命令行执行一些操作,例如 bazel build //...甚至从 CLI 运行相同的测试,我得到:

$ bazel test //foo:bar
INFO: Build options have changed, discarding analysis cache.
...

这迫使我的项目重建 Protobuf 和其他速度不快的 native 事物。

为什么是这样?

例如,我可以看到,当 IntelliJ 调用一个测试时,它对 bazel 有完整的参数集。命令,我从未在 CLI 中指定任何命令:
/usr/local/bin/bazel test --tool_tag=ijwb:IDEA:ultimate \
--curses=no --color=yes --experimental_ui=no \
--progress_in_terminal_title=no --runs_per_test=1 \
--flaky_test_attempts=1 \
--build_event_binary_file=/var/folders/08/fk59w_xd4zz2phs6q6r3r5mc0000gn/T/intellij-bep-b37bc093-86b4-4a03-9599-a45e7285f6ac \
--nobuild_event_binary_file_path_conversion \
--test_filter=com.spotify.spyglass.knightcrock.CommitInfoParserTest# 
-- //knightcrock-consumer:CommitInfoParserTest

我所经历的正是 https://github.com/bazelbuild/bazel/issues/3433 中所描述的。 ,因为在错误的地方打开而被关闭,没有太多评论。

最佳答案

导致重新运行分析的特定选项是 --test_filter .其他选项不应影响构建配置,因此如果您在命令行上指定相同的测试过滤器,则不应看到重新运行分析。

修复此问题以便并非所有分析都重新运行需要配置调整,这是一项正在积极进行的大量工作。

但请注意,仅应重新运行分析。仍然有一个本地 Action 缓存,所以 bazel 应该注意到并不是所有的东西都需要真正重建。通过运行 --subcommands 来确认这一点可能会很好。查看当您从命令行尝试使用不同的 --test_filter 时 bazel 运行的内容.

此外,可能值得提交一个关于打印哪些选项导致分析缓存被删除的问题,以便更容易诊断这类事情。

关于intellij-idea - 为什么每当在 IntelliJ 和命令行之间切换时 Bazel 都会进行完全重建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53012722/

相关文章:

sql-server - 为什么 [PrtSc] 按钮在 Intellij-Idea 或 Microsoft SQL Server Management Studio 中不起作用?

java - 从 Skylark 规则访问 maven_jar.artifact 的值

docker - 使用Bazel从Dockerfile构建Docker镜像

bazel - 在不下载外部依赖项的情况下运行 bazel 查询

absolute-path - bazel testdata绝对路径需要 '/external/'

java - 使用 IntelliJ 2017.1 时,它反复显示 : Unable to save settings: Failed to save settings. 请重新启动 IntelliJ IDEA

google-app-engine - IDEA+Gradle如何调试AppEngine本地服务器?

java - 重复键 org.jetbrains.jps.model.module.impl.JpsModuleImpl

java - 是否有任何标准方法可以使用 gradle 从 intellij 运行 java 项目?

tensorflow - 由于 tensorflow,如何卸载 bazel 0.29.0 以安装 0.26.1