如何从BUILD文件下载Bazel中的文件



有没有办法直接从BUILD文件下载Bazel中的文件?我知道我可能可以使用wget并启用网络,但我正在寻找一种与bazel fetch配合使用的解决方案。

我有一堆文件要下载,这些文件只会被一个包消耗掉。使用在单回购根的WORKSPACE中添加http_file()规则的标准方法是错误的。它将与包解耦,并污染一个完全无关的文件。

创建一个download.bzl并将其加载到WORKSPACE文件中

工作空间

load("//my_project/my_sub_project:download.bzl", "downlad_files")
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
download_files()

下载.bzl

BUILD_FILE_CONTENT_some_3d_model = """
filegroup(
name = "some_3d_model",
srcs = [
"BMW_315_DA2.obj",
],
visibility = ["//visibility:public"],
)
"""
def download_files():
http_archive(
name = "some_3d_model",
build_file_content = BUILD_FILE_CONTENT_some_3d_model,
#sha256 = "...",
urls = ["https://vertexwahn.de/lfs/v1/some_3d_model.zip"],
)
copy_file(
name = "copy_resources_some_3d_model",
src = "@some_3d_model",
out = "my/destination/path/some_file.obj",
)

最新更新