bazel - 如何从本地文件模拟 http_archive
问题描述
我有实现 bazel 规则的主项目和模拟最终用户体验的子项目。在子项目中,我想加载在主项目中创建的存档,就好像它是使用 http_archive 加载的一样。这是回购设置示例:
root/
|- WORKSPACE
|- BUILD
|- rules.bzl
\- integration-tests/
|- WORKSPACE
|- BUILD
该root/BUILD
文件具有:release
创建 tar.gz 文件的目标。我想在里面加载这个文件,integration-tests/WORKSPACE
就好像它是使用 [http_archive][1] 加载的一样。有没有办法做到这一点?
我发现的简单方法是使用:
http_archive(
urls = [
"file://path_to_archive",
],
)
解决方案
有没有办法做到这一点?
严格来说,不,没有办法做到这一点。像这样的存储库规则在构建的加载阶段http_archive
执行,而构建输出是在执行阶段创建的。存储库规则不能依赖于构建目标,因为该目标尚未构建。
这甚至是真实的,尤其是跨越工作空间边界。您的子项目WORKSPACE
无法直接依赖父项目或任何其他项目的构建目标。
在这种情况下,我会考虑您是否真的需要在WORKSPACE
. tarball 实际上是 Bazel 存储库吗?如果是这样,您可能想研究测试 Bazel 扩展的技术。
推荐阅读
- r - 如果时间序列包含 NA 并且biasadj = TRUE,则 Auto.arima 仅返回拟合值的 NA
- python - 从没有唯一 ID 的每个类别中选择 DF 的顶部行
- javascript - 在 ChartJS 函数中使用 php 变量时出现表达式预期错误
- python - 用这些噪声参数填充 2d numpy 数组的更快方法?当前循环遍历每个元素
- c# - C#和PHP之间的对称加密
- vba - 目标表中不存在字段
- xml - 删除 XSLT 中的元素?
- .net - VSCode 本地 nuget 存储库\源
- python - 训练临床 EHR pytorch 模型时出现未定义错误
- r - 用多个变量和 id 列扩大数据框