在 bazel 中,我看到java_library
规则允许我配置resource_jars
attribute - 这很棒。
我想过滤我从这些档案中复制的内容,以便只复制具有特定模式的文件? (即 - 仅*.txt
资源或*.xml
资源)是否有内置方法可以做到这一点?
答案 0 :(得分:1)
不是内置的,但您可以使用以下内容自行完成:
genrule(
name = "jar-filter",
srcs = [":input.jar"],
outputs = ["output.jar"],
cmd = """
tmpdir=$(mktemp -d)
cd $tmpdir
jar xf $(location :input.jar)
for $$i in $$(find *); do
# Remove any files that don't end with the right extensions.
if expr match "$$i" '.*\(.txt\)' || expr match "$$i" '.*\(.xml\)'; then
continue
else
rm $$i
fi
done
jar cf $@ * # Creates the new jar file.
""",
)
然后您可以依赖其他目标的output.jar
。