diff --git a/test/java/common/rules/common_launcher_java_binary_tests.bzl b/test/java/common/rules/common_launcher_java_binary_tests.bzl
index 572f27a..36b6c47 100644
--- a/test/java/common/rules/common_launcher_java_binary_tests.bzl
+++ b/test/java/common/rules/common_launcher_java_binary_tests.bzl
@@ -3,6 +3,9 @@
 load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite")
 load("@rules_testing//lib:util.bzl", "util")
 load("//java:java_binary.bzl", "java_binary")
+load("//java:java_library.bzl", "java_library")
+load("//test/java/testutil:artifact_closure.bzl", "artifact_closure")
+load("//test/java/testutil:mock_java_toolchain.bzl", "mock_java_toolchain")
 
 def _test_java_binary_non_executable_rule_outputs(name):
     util.helper_target(
@@ -23,10 +26,61 @@
         "{package}/{name}.jar",
     ])
 
+def _test_java_binary_resources_only(name):
+    util.helper_target(
+        java_binary,
+        name = name + "/bin",
+        main_class = "doesnotmatter",
+        resources = [
+            "someFile.xml",
+            "someOtherFile.xml",
+        ],
+        runtime_deps = [name + "/lib"],
+    )
+    util.helper_target(
+        java_library,
+        name = name + "/lib",
+        srcs = ["Xml.java"],
+    )
+    util.helper_target(
+        mock_java_toolchain,
+        name = name + "/toolchain",
+    )
+
+    analysis_test(
+        name = name,
+        attr_values = {"tags": ["min_bazel_8"]},  # the deploy jar was created by a separate rule in Bazel 7
+        config_settings = {
+            "//command_line_option:extra_toolchains": [Label(name + "/toolchain")],
+        },
+        extra_target_under_test_aspects = [artifact_closure.aspect],
+        impl = _test_java_binary_resources_only_impl,
+        target = name + "/bin",
+    )
+
+def _test_java_binary_resources_only_impl(env, target):
+    deploy_jar = env.expect.that_target(target).action_named("JavaDeployJar").actual.outputs.to_list()[0]
+    env.expect.that_file(deploy_jar).basename().equals("bin_deploy.jar")
+
+    # check that we do have a jar file build for bin, although
+    # it does not contain any source files
+    artifact_closure.of_target(env, target, extensions = ["jar"], initial = deploy_jar).contains_exactly([
+        "{package}/JavaBuilder_deploy.jar",
+        "{package}/lib{test_name}/lib.jar",
+        "{package}/{test_name}/bin-class.jar",
+        "{package}/{test_name}/bin.jar",
+        "{package}/{test_name}/bin_deploy.jar",
+    ])
+    artifact_closure.of_target(env, target, extensions = ["xml"], initial = deploy_jar).contains_exactly([
+        "{package}/someFile.xml",
+        "{package}/someOtherFile.xml",
+    ])
+
 def java_binary_launcher_tests(name):
     test_suite(
         name = name,
         tests = [
             _test_java_binary_non_executable_rule_outputs,
+            _test_java_binary_resources_only,
         ],
     )
diff --git a/test/java/testutil/artifact_closure.bzl b/test/java/testutil/artifact_closure.bzl
index b7141f0..4835358 100644
--- a/test/java/testutil/artifact_closure.bzl
+++ b/test/java/testutil/artifact_closure.bzl
@@ -4,8 +4,11 @@
 
 # TODO: consider upstreaming this to @rules_testing
 
-def _compute(target):
-    to_process = target[DefaultInfo].files.to_list()
+def _compute(target, initial = None):
+    if not initial:
+        to_process = target[DefaultInfo].files.to_list()
+    else:
+        to_process = [initial]
     if _ArtifactActionMapInfo not in target:
         fail("Did you forget to add the aspect to analysis_test(extra_target_under_test_aspects = )?")
     map = target[_ArtifactActionMapInfo].map
@@ -51,13 +54,19 @@
 
 _aspect = aspect(_aspect_impl, attr_aspects = ["*"])
 
-def _of_target(env, target, as_paths = True, extensions = None):
+def _of_target(
+        env,
+        target,
+        initial = None,
+        as_paths = True,
+        extensions = None,
+        package_local_only = True):
     meta = env.expect.meta.derive(format_str_kwargs = {
         "name": target.label.name,
         "package": target.label.package,
     })
     result = subjects.collection(
-        _compute(target),
+        _compute(target, initial = initial),
         meta = meta,
         container_name = "artifact clousre of {}".format(target.label),
         format = True,
@@ -67,6 +76,11 @@
             filter = lambda f: f.extension in extensions,
             desc = "with extensions: {exts}".format(exts = extensions),
         )
+    if package_local_only:
+        result = result.transform(
+            filter = lambda f: f.short_path.startswith(target.label.package),
+            desc = "in package: {package}".format(package = target.label.package),
+        )
     if as_paths:
         result = result.transform(
             desc = "short_path",
