def _merge_jars_impl(ctx): out = ctx.actions.declare_file("%s.jar" % ctx.label.name) args = ctx.actions.args() args.add("--output", out) args.add_all(ctx.files.inputs, before_each = "--sources") ctx.actions.run( mnemonic = "MergeJars", executable = ctx.executable._merge_jars, inputs = ctx.files.inputs, outputs = [out], arguments = [args], ) return [ DefaultInfo(files = depset([out])), ] merge_jars = rule( _merge_jars_impl, attrs = { "inputs": attr.label_list( mandatory = True, allow_files = True, ), "_merge_jars": attr.label( executable = True, cfg = "exec", default = "@rules_jvm_external//private/tools/java/com/github/bazelbuild/rules_jvm_external/jar:MergeJars", ), "_java_toolchain": attr.label( default = "@bazel_tools//tools/jdk:current_java_toolchain", ), }, )