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

如何仅查询BUILD文件里deps字段声明的直接依赖?

如何仅查询Bazel BUILD文件中deps字段声明的直接依赖

假设你的BUILD文件中有如下目标定义:

java_library(
    name = "my-library",
    srcs = glob(["src/main/java/**/*.java"]),
    deps = [
        ":some-target",
        "//some-package:another-target",
        artifact("some-maven:some-artifact"),
        artifact("another-maven:another-artifact"),
    ],
)

使用bazel query deps(//:my-library)会返回源文件、平台目标等大量无关依赖,以下是两种仅获取deps字段直接声明内容的方法:

方法一:使用buildozer工具(推荐)

buildozer是Bazel官方提供的BUILD文件操作工具,可直接提取目标的属性内容,执行以下命令:

buildozer 'print deps' //:my-library

执行后会直接输出deps字段内的所有声明项,结果与你期望的完全一致,包括artifact()类型的Maven依赖。

方法二:使用bazel query结合过滤规则

如果不想额外安装工具,可通过bazel query的过滤逻辑实现:

  • 提取本地直接依赖:
bazel query 'direct_deps(//:my-library) except deps(srcs(//:my-library))'
  • 单独提取Maven artifact依赖:
bazel query 'kind(maven_artifact, direct_deps(//:my-library))'

将两个命令的结果合并,即可得到deps字段内的所有直接依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:42:12