如何在不同的子项目中使用相同的文件组定义

时间:2018-07-03 23:01:35

标签: bazel

我需要为某些子项目声明特定的资源,我正在按照以下方式进行操作

setInterval

但是,在任何子项目中,可以找到资源的路径都是相同的。我的问题是-在这种特殊情况下,最小化代码重复的最简单的方式是什么?

基本上我想拥有类似的东西 相关子项目中的explicit_some_resources()。

,然后使每个应用程序都可以看到此资源。

1 个答案:

答案 0 :(得分:3)

您可以将文件组放入.bzl文件中的宏中,然后在相关子项目中加载并运行该宏。

类似:

workspace/resources.bzl

def expose_some_resources():
  native.filegroup(
    name = "some_resources",
    visibility = ["//:app"],
    srcs = native.glob([
        "src/my/resources/**/*.resources",
    ]),
  )

workspace/subproject/BUILD

load("//:resources.bzl", "expose_some_resources")
expose_some_resources()

您还可以考虑向宏添加一些错误检查,例如使用native.existing_rule检查每个软件包仅对该宏调用一次,或检查glob返回1个或多个文件。