Refactor java_single_jar to allow custom output names.
PiperOrigin-RevId: 834288538
Change-Id: I18bd305a6870e74db4136f3dc78ffebefaaf91cd
diff --git a/java/java_single_jar.bzl b/java/java_single_jar.bzl
index e51329e..bfdd21c 100644
--- a/java/java_single_jar.bzl
+++ b/java/java_single_jar.bzl
@@ -40,7 +40,7 @@
args.use_param_file("@%s")
args.set_param_file_format("multiline")
args.add_all("--deploy_manifest_lines", ctx.attr.deploy_manifest_lines)
- args.add("--output", ctx.outputs.jar)
+ args.add("--output", ctx.outputs.output)
args.add("--normalize")
# Deal with limitation of singlejar flags: tool's default behavior is
@@ -64,15 +64,15 @@
ctx.actions.run(
inputs = inputs,
- outputs = [ctx.outputs.jar],
+ outputs = [ctx.outputs.output],
arguments = [args],
- progress_message = "Merging into %s" % ctx.outputs.jar.short_path,
+ progress_message = "Merging into %s" % ctx.outputs.output.short_path,
mnemonic = "JavaSingleJar",
executable = ctx.executable._singlejar,
use_default_shell_env = True,
)
- files = depset([ctx.outputs.jar])
+ files = depset([ctx.outputs.output])
providers = [DefaultInfo(
files = files,
runfiles = ctx.runfiles(transitive_files = files),
@@ -81,6 +81,11 @@
providers.append(java_common.JavaRuntimeClasspathInfo(runtime_classpath = inputs))
return providers
+def _init(name, **kwargs):
+ if "output" not in kwargs:
+ kwargs["output"] = name + ".jar"
+ return kwargs
+
java_single_jar = rule(
attrs = {
"deps": attr.label_list(
@@ -122,10 +127,9 @@
allow_single_file = True,
executable = True,
),
+ "output": attr.output(),
},
- outputs = {
- "jar": "%{name}.jar",
- },
+ initializer = _init,
implementation = _java_single_jar,
doc = """
Collects Java dependencies and jar files into a single jar