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”)
注意:在使用此技巧时,只需小心潜在的依赖循环(即加载一个生成的文件,该文件本身由依赖于相同外部回购的规则生成!)