在bazel的java_library中过滤resource_jars的内容

时间:2017-03-23 15:44:55

标签: java scala build bazel

bazel 中,我看到java_library规则允许我配置resource_jars attribute - 这很棒。

我想过滤我从这些档案中复制的内容,以便只复制具有特定模式的文件? (即 - 仅*.txt资源或*.xml资源)是否有内置方法可以做到这一点?

1 个答案:

答案 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