我有两个存储库,即Client和Library。
在客户端的WORKSPACE文件内部,客户端将Library作为http_archive导入,名称为“ foo”。
在客户端内部,我想使用引用库内部目标的库宏。我的问题是Library宏不知道是作为“ foo”导入的,因此在扩展宏时找不到目标。
答案 0 :(得分:1)
图书馆/工作空间:
workspace(name = "library")
库/some.bzl:
def my_macro():
native.java_library(name = "my_macro_lib",
deps = ["@library//:my_macro_lib_dependnecy"]
)
library / BUILD.bazel:
java_library(name = "my_macro_lib_dependnecy",
...
)
客户端/工作空间:
workspace(name = "client")
http_archive(
name = "library",
urls = [...],
strip_prefix = ...,
sha256 = ...,
)
因为两个工作区的库工作区(name = "library"
)使用相同的名称,并且因为宏在其依赖项(@library//:my_macro_lib_dependnecy
)中引用了工作区名称,所以它可以正常工作。
请注意,此方法有效,但有一些古怪之处,将在0.17.0中解决