不同项目中Bazel外部依赖项的名称不一致
假设有两个Bazel项目,它们都依赖于Python包 项目A用名称添加六个不同项目中Bazel外部依赖项的名称不一致,bazel,Bazel,假设有两个Bazel项目,它们都依赖于Python包 项目A用名称添加六个six\u 1\u 10\u 0: new_http_archive( name = "six_1_10_0" ... ) py_binary( name = "lib_a", deps = ["@six_1_10_0//:six"] ) 项目B添加了六个名称为six\u archive new_http_archive( name = "six_archive" ...
six\u 1\u 10\u 0
:
new_http_archive(
name = "six_1_10_0"
...
)
py_binary(
name = "lib_a",
deps = ["@six_1_10_0//:six"]
)
项目B添加了六个名称为six\u archive
new_http_archive(
name = "six_archive"
...
)
py_binary(
name = "lib_b",
deps = ["@six_archive//:six"]
)
在我的项目中,我同时依赖于A和B。有没有办法让他们使用相同的
six
?要更改依赖项的构建
文件内容,我能想到的最简单的方法是使用新的
存储库规则之一(例如)。使用build\u file
或build\u file\u content
属性编写一个新的build
文件,编写一个新的py\u二进制
规则,其deps
包含您的规范@six
存储库,并保持所有其他属性不变
没有一种简单的方法可以做到这一点,因为Bazel没有假设为什么项目a使用与项目B不同的six
Bazel知道他们使用相同版本的唯一方法是,如果两个new_http_archive
规则都指定了相同的SHA
校验和。如果它们是相同的校验和,您可以使用--experimental\u repository\u cache=/some/path
来避免两次下载相同的归档文件