You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bazel的pkg_tar中添加本地文件?

解决Bazel 5.4.1中new_local_repository文件加入pkg_tar的方法

步骤1:配置new_local_repository并暴露文件

在WORKSPACE里定义new_local_repository时,要在其附带的BUILD片段中把需要打包的文件暴露出来,用exports_files或filegroup都可以:

WORKSPACE配置示例:

new_local_repository(
    name = "my_local_files",
    path = "/path/to/your/local/dir",
    build_file_content = """
# 单个或少量文件直接用exports_files
exports_files(["config.ini", "assets/icon.png"])

# 文件多的话用filegroup批量管理
filegroup(
    name = "all_assets",
    srcs = glob(["**/*"]),
    visibility = ["//visibility:public"],
)
""",
)

步骤2:在pkg_tar中引用这些文件

在项目的BUILD文件里,直接通过仓库名引用暴露的文件,加入pkg_tar的files或srcs参数即可:

BUILD配置示例:

load("@rules_pkg//:pkg.bzl", "pkg_tar")

pkg_tar(
    name = "app_tarball",
    # 单个文件引用方式
    files = [
        "@my_local_files//:config.ini",
        "@my_local_files//:assets/icon.png",
    ],
    # 批量引用filegroup的方式
    # srcs = ["@my_local_files//:all_assets"],
    package_dir = "opt/my_app",  # 指定文件在tar包内的存放路径
)

关键注意点

  • 必须保证new_local_repository里的文件规则设置了visibility = ["//visibility:public"],否则你的pkg_tar规则无法访问到这些文件。
  • 用glob(["**/*"])配合filegroup是批量引入本地目录所有文件最优雅的方式,不用逐个列举路径。

内容的提问来源于stack exchange,提问作者Lemonorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:18:13