bazel - 必须在根 WORKSPACE 中声明依赖项的依赖项?
问题描述
我写了一个例子:
git clone git@github.com:rynz/test-app.git
bazel test //...
它会出错,抱怨com_google_absl
无法解决。
编辑WORKSPACE
和取消注释com_google_absl
依赖,现在它将成功构建和测试。
rynz_app
仅取决于rynz_protocol
,但rynz_protocol
也取决于com_google_absl
。为什么我必须com_google_absl
在rynz_app
WORKSPACE
已经声明 in 时重新声明 in rynz_protocol
WORKSPACE
?
亲切的问候,
瑞安
解决方案
从文档中:
Bazel 仅读取 WORKSPACE 文件中列出的依赖项。如果您的项目 (A) 依赖于另一个项目 (B),该项目 (B) 在其 WORKSPACE 文件中列出了对第三个项目 (C) 的依赖关系,则您必须将 B 和 C 添加到项目的 WORKSPACE 文件中。这一要求可能会增加 WORKSPACE 文件的大小,但希望限制一个库在 1.0 版本中包含 C,而另一个库在 2.0 版本中包含 C。
https://docs.bazel.build/versions/master/external.html#transitive-dependencies