.bzl文件在外部依赖项中

时间:2019-10-15 10:01:09

标签: bazel

我在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存储库中的目标,而是我的本地工作区中的目标。

1 个答案:

答案 0 :(得分:0)

似乎我橡皮鸭实现了Stackoverflow。因为解决方案是在写问题时出现的?
但是,解决方案是在加载.bzl文件时明确提及本地工作空间:
假设我们已经在WORKSPACE中声明了该名称,如下所示:

workspace(name = "local_proj")

现在而不是load("//:external/code.bzl", "some_func"),只需将其显式加载为本地工作区文件即可:

load("@local_proj//:external/code.bzl", "some_func")

注意:使用此技巧时,请小心潜在的依赖关系循环(即,加载生成的文件,该文件本身是由规则根据同一外部存储库生成的!)