Build 使用Bazel导出本地依赖项文件夹

Build 使用Bazel导出本地依赖项文件夹,build,bazel,monorepo,Build,Bazel,Monorepo,我对Bazel有点陌生,对从单个文件夹导出一组依赖项有疑问 我有一个文件夹的文件夹,每个文件夹都是Bazel项目。这些都是本地存在的外部依赖项。我想从外部依赖项文件夹向上导出这些文件 我希望能够在其他工作区(例如源代码)中引用这些依赖项(例如@dependency_one)。在外部文件夹中我需要什么样的设置 project │ │ └───external │ │ WORKSPACE (?) │ │ BUILD (?) │ │ │ └───dependency_o

我对Bazel有点陌生,对从单个文件夹导出一组依赖项有疑问

我有一个文件夹的文件夹,每个文件夹都是Bazel项目。这些都是本地存在的外部依赖项。我想从外部依赖项文件夹向上导出这些文件

我希望能够在其他工作区(例如源代码)中引用这些依赖项(例如@dependency_one)。在外部文件夹中我需要什么样的设置

project
│    
│
└───external
│   │   WORKSPACE (?)
│   │   BUILD (?)
│   │
│   └───dependency_one
│   │   │   WORKSPACE
│   │   │   ...
│   │   │   ...
│   └───dependency_two
│   |   │   WORKSPACE
│   │   │   ...
│   │   │   ...
└───source_code
│   │   WORKSPACE (?)
│   │   ...
提前感谢。

是为这些文件夹创建文件夹的方法。在顶级
工作区中类似这样的内容

本地存储库(
name=“dependency\u one”,
path=“外部/依赖项”,
)
本地存储库(
name=“dependency\u two”,
path=“外部/依赖项”,
)
如果我正确地解释了您的布局,您希望
项目
成为该布局的一部分,那么
源代码
中的所有内容都应该是该布局的一部分,这意味着不创建
源代码/工作区
文件。不过,编写规则的
源代码/BUILD
文件是有意义的

请务必记住正常的限制:您必须在顶级
工作区中加载
依赖项一
依赖项二
所需的所有外部存储库


此外,我会避免将
外部
作为顶级文件夹名。Bazel将该路径用于与外部存储库相关的一些特殊情况。它正在被逐步淘汰,但仍在进行中,并将禁用某些特殊处理,但我不确定这些是否足以使您的布局正常工作,而且它们可能会破坏您想要使用的各种规则。

是否可以在外部内部创建一个bazel规则来加载所有依赖项?是否有可能将外部项目视为bazel项目并将其提交给它?i、 e.本地存储库(外部…)加载(@external//:deps.bzl,external_deps)external_deps()这是否可能,而不是在工作区文件中单独列出每个本地存储库?是的,您可以这样做。仍然可能会遇到问题,因为它名为
external
。如果需要,您也可以只创建
external/deps.bzl
,然后
load('//external:deps.bzl',external_deps)
,并将文件加载到主存储库中。