我在WORKSPACE中将外部依赖项声明为new_git_repository
,并为其提供了一个BUILD文件。
proj/
├── BUILD
├── external
│ ├── BUILD.myDep
│ └── code.bzl
└── WORKSPACE
在BUILD.myDep
文件中,我想在附近加载code.bzl
,但是当我加载(load("//:external/code.bzl", "some_func")
)时,bazel尝试改为加载@myDep//:external/code.bzl
!
当然,它不是@myDep
存储库中的目标,而是我的本地工作区中的目标。
答案 0 :(得分:0)
似乎我橡皮鸭实现了Stackoverflow。因为解决方案是在写问题时出现的?
但是,解决方案是在加载.bzl
文件时明确提及本地工作空间:
假设我们已经在WORKSPACE
中声明了该名称,如下所示:
workspace(name = "local_proj")
现在而不是load("//:external/code.bzl", "some_func")
,只需将其显式加载为本地工作区文件即可:
load("@local_proj//:external/code.bzl", "some_func")
注意:使用此技巧时,请小心潜在的依赖关系循环(即,加载生成的文件,该文件本身是由规则根据同一外部存储库生成的!)