如何从bazel中的jar中提取资源
How to extract resources from jar in bazel
我的项目中有不同的模块,它们将配置文件生成为 JSON,它们是 java_libarary 的一部分。我需要使用 bazel build 将这个生成的 JSON 文件复制到一个新模块。我正在考虑算法来做到这一点:
- 从 bazel 读取所有依赖项(假设所有模块
generate json 将作为依赖添加)。
- 在依赖项中逐个提取 JAR 文件
- 复制json到新位置
- 包已复制 json 到新的 tar 作为输出
我不确定,如何在 bazel 中执行此操作,如果有人有类似的示例,请告诉我。
提前致谢...
我正在使用 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",
)
谢谢
我的项目中有不同的模块,它们将配置文件生成为 JSON,它们是 java_libarary 的一部分。我需要使用 bazel build 将这个生成的 JSON 文件复制到一个新模块。我正在考虑算法来做到这一点:
- 从 bazel 读取所有依赖项(假设所有模块 generate json 将作为依赖添加)。
- 在依赖项中逐个提取 JAR 文件
- 复制json到新位置
- 包已复制 json 到新的 tar 作为输出
我不确定,如何在 bazel 中执行此操作,如果有人有类似的示例,请告诉我。
提前致谢...
我正在使用 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",
)
谢谢