Bazel 外部依赖项中的.bzl文件

Bazel 外部依赖项中的.bzl文件,bazel,Bazel,我在工作区中将一个外部依赖项声明为新的\u git\u存储库,并为其提供了一个构建文件 proj/ ├── BUILD ├── external │   ├── BUILD.myDep │   └── code.bzl └── WORKSPACE 在BUILD.myDep文件中,我想在附近加载code.bzl,但当我加载它时(load(“//:external/code.bzl”,“some_func”)),bazel试图加载@myDep//:external/code.bzl 当然,它不是@

我在工作区中将一个外部依赖项声明为
新的\u git\u存储库
,并为其提供了一个构建文件

proj/
├── BUILD
├── external
│   ├── BUILD.myDep
│   └── code.bzl
└── WORKSPACE
BUILD.myDep
文件中,我想在附近加载
code.bzl
,但当我加载它时(
load(“//:external/code.bzl”,“some_func”)
),bazel试图加载
@myDep//:external/code.bzl

当然,它不是
@myDep
存储库中的目标,而是我本地的工作包中的目标。

似乎是我用橡皮鸭挡住了堆栈溢出。因为答案在写问题的时候出现了
但是,解决方案是在加载
.bzl
文件时明确提到本地工作区:
假设我们在
工作区中声明了名称,如下所示:

工作区(name=“local\u proj”)
现在不必加载(“//:external/code.bzl”,“some_func”)
,只需将其显式加载为本地工作区文件:

load(“@local\u proj/:external/code.bzl”,“some\u func”)
注意:在使用此技巧时,只需小心潜在的依赖循环(即加载一个生成的文件,该文件本身由依赖于相同外部回购的规则生成!)