-1

我的项目中有不同的模块,它们将配置文件生成为 JSON,它们是 java_libarary 的一部分。我需要使用 bazel 构建将此生成的 JSON 文件复制到新模块。我正在考虑算法来做到这一点:

  1. 从 bazel 读取所有依赖项(假设所有生成 json 的模块都将添加为依赖项)。
  2. 逐个解压JAR文件
  3. 将 json 复制到新位置
  4. 包将 json 复制到新的 tar 作为输出

我不确定,我怎么能在 bazel 中做到这一点,如果有人有类似的例子,请告诉我。

提前致谢...

4

1 回答 1

0

我正在使用 genrule 来实现与:

在 java_library BUILD 文件中

genrule(
    name = "core-search-registry-gen-rule",
    srcs = [
        ":core-alarm",
    ],
    outs = ["search-registry.zip"],
    cmd = """
    mkdir -p $(@D)/search_registry && \
    $(JAVABASE)/bin/jar xf $(location :core-alarm)  && \
    for x in `find . -type f -name "*_registry.json"`; \
        do cp $$x $(@D)/search_registry/; done && \
    (cd $(@D) && zip -rq search-registry.zip search_registry/)
    """,
    message = "Concatenation of all json files one zip file",
    toolchains = [
        "@bazel_tools//tools/jdk:current_java_runtime",
    ],
    visibility = ["//mp:__subpackages__"],
)

在打包 BUILD 文件中:

pkg_tar(
    name = "etc-search-registry",
    files = [
        "//mp/alarms/core:core-search-registry-gen-rule",
    ],
    mode = "0644",
    package_dir = "/etc/conf",
)

谢谢

于 2021-01-21T18:50:10.677 回答