bazel - 我可以依赖与模式匹配的所有 Bazel 目标,而不单独列出它们吗?
问题描述
我有一个如下所示的目录结构:
some-root/
└── my-stuff/
├── BUILD
├── foo/
│ └── BUILD
├── bar/
│ └── BUILD
└── baz/
└── BUILD
我想要一个//some-root/my-stuff:update
运行所有 , //some-root/my-stuff/foo:update
,//some-root/my-stuff/bar:update
的目标//some-root/my-stuff/baz:update
。
我可以通过将每个目标列为依赖项来做到这一点。但是,如果我有很多这些并且我希望能够添加更多它会变得很痛苦(添加一堆子目录很容易而错过将一个添加到父BUILD
文件中)。
有没有办法做通配符标签或以其他方式从文件路径中发现标签?我能够bazel test //some-root/my-stuff/...
在路径下运行所有测试,但我似乎无法在BUILD
文件中使用该模式,而我想要的更像是bazel run //some-root/my-stuff/...:update
哪个也不起作用。
解决方案
update
您可以从命令行获取具有名称的所有标签:
bazel query "attr(name, '^update$', //...)"
并获取查询的输出并手动编辑您的依赖项。
但不幸的是,您不能将其放入 agenquery rule
中(这将生成要依赖的目标列表),因为
不允许查询包含通配符目标规范(例如 //pkg:* 或 //pkg:all)
推荐阅读
- java - 春天 - MongoDB
- java - 在 ArrayNode 上循环转换为流
- git - 导入特定的 .scss 文件会破坏 Git?
- beautifulsoup - BeautifulSoup 在同一个类标签中查找多个属性
- javascript - 在控制台期间取消定义结果
- python - 将 Julia 添加到 PATH 会导致其他人从 PATH 中退出 || Mac OSX
- r - 使用列表中的 data.table
- microsoft-graph-api - 属性“autoSubscribeNewMembers”和实际行为的问题
- c# - 具有多个值的枚举
- javascript - 如何找到一个文件巫婆时间戳路径