"(new_)git_repository"和"(new_)http_archive"工作空间规则处理外部项目,以便在构建或预取时将任何外部依赖项复制到链接到工作空间的临时目录${WORKSPACE}/bazel-workspace/external/${EXTERNAL_DEP_NAME}
。
我想在我的仓库中本地保存外部依赖项,因此如果远程存储库消失,即使在没有缓存的新计算机上,我也会拥有依赖项的副本。
我可以在不编写自定义工作区规则的情况下以某种方式更改默认行为吗?
答案 0 :(得分:2)
Bazel确实有一个可用于此的标志:project.version
。它被设计为一个系统范围的缓存,因此一台机器上的多个项目不必重新下载依赖项,但您可以在每个存储库中使用它。基本上你是这样说的:
--experimental_repository_cache
然后,所有外部存储库都将下载到项目中的bazel build --experimental_repository_cache=$PWD/my_cache //foo
目录中。
此 是由外部依赖关系的哈希键入的缓存。内容,因此它不会非常易读,但它可以让您轻松地将外部依赖关系保存在VCS中。
(从理论上讲,你甚至可以在my_cache
文件中签入默认情况下指定此选项,但.bazelrc
现在只采用绝对路径,所以它有点不切实际。我提交{ {3}}处理相对路径用例。)
答案 1 :(得分:0)
我可能错了,但听起来你只想在VCS中查看它。如果我们正在讨论一个http存档然后手动下载它,将它粘贴在相关的“third_party”子文件夹下,并使用您为其制作的BUILD文件,然后就完成了。
如果您想使用Bazel机制下载并签入外部依赖项,则目前不支持此功能。 也许你应该打开issue