首页 > 解决方案 > 必须在根 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_abslrynz_app WORKSPACE已经声明 in 时重新声明 in rynz_protocol WORKSPACE

亲切的问候,

瑞安

标签: bazel

解决方案


从文档中:

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


推荐阅读