Add deploy_env to java_single_jar
PiperOrigin-RevId: 572174531
Change-Id: I38d46b8dea97f54dab661719239ac89f322af2a1
diff --git a/java/java_single_jar.bzl b/java/java_single_jar.bzl
index b283a35..3411790 100644
--- a/java/java_single_jar.bzl
+++ b/java/java_single_jar.bzl
@@ -19,6 +19,15 @@
transitive_inputs.append(depset(files))
inputs = depset(transitive = transitive_inputs)
+ if hasattr(java_common, "JavaRuntimeClasspathInfo"):
+ deploy_env_jars = depset(transitive = [
+ dep[java_common.JavaRuntimeClasspathInfo].runtime_classpath
+ for dep in ctx.attr.deploy_env
+ ])
+ excluded_jars = {jar: None for jar in deploy_env_jars.to_list()}
+ if excluded_jars:
+ inputs = depset([jar for jar in inputs.to_list() if jar not in excluded_jars])
+
args = ctx.actions.args()
args.add_all("--sources", inputs)
args.use_param_file("@%s")
@@ -74,6 +83,18 @@
),
"deploy_manifest_lines": attr.string_list(doc = """
A list of lines to add to the <code>META-INF/manifest.mf</code> file."""),
+ "deploy_env": attr.label_list(
+ providers = [java_common.JavaRuntimeClasspathInfo] if hasattr(java_common, "JavaRuntimeClasspathInfo") else [],
+ allow_files = False,
+ doc = """
+ A list of `java_binary` or `java_single_jar` targets which represent
+ the deployment environment for this binary.
+
+ Set this attribute when building a plugin which will be loaded by another
+ `java_binary`.
+
+ `deploy_env` dependencies are excluded from the jar built by this rule.""",
+ ),
"compress": attr.string(default = "preserve", doc = """
Whether to always deflate ("yes"), always store ("no"), or pass
through unmodified ("preserve"). The default is "preserve", and is the