diff --git a/bp2build/java_import_conversion_test.go b/bp2build/java_import_conversion_test.go
index bba2f50..ad69ed5 100644
--- a/bp2build/java_import_conversion_test.go
+++ b/bp2build/java_import_conversion_test.go
@@ -52,13 +52,15 @@
 }
 `,
 		ExpectedBazelTargets: []string{
-			MakeBazelTarget("java_import", "example_import", AttrNameToString{
-				"jars": `["import.jar"]`,
+			MakeBazelTarget("filegroup", "example_import-jars", AttrNameToString{
+				"srcs": `["import.jar"]`,
 			}),
-			MakeBazelTarget("java_library", "example_import-neverlink", AttrNameToString{
-				"exports":     `[":example_import"]`,
-				"neverlink":   `True`,
-				"sdk_version": `"none"`,
+			MakeBazelTarget("java_import", "example_import", AttrNameToString{
+				"jars": `[":example_import-jars"]`,
+			}),
+			MakeBazelTarget("java_import", "example_import-neverlink", AttrNameToString{
+				"jars":      `[":example_import-jars"]`,
+				"neverlink": `True`,
 			}),
 		}})
 }
@@ -86,17 +88,19 @@
 }
 `,
 		ExpectedBazelTargets: []string{
-			MakeBazelTarget("java_import", "example_import", AttrNameToString{
-				"jars": `select({
+			MakeBazelTarget("filegroup", "example_import-jars", AttrNameToString{
+				"srcs": `select({
         "//build/bazel_common_rules/platforms/os:android": ["android.jar"],
         "//build/bazel_common_rules/platforms/os:linux_glibc": ["linux.jar"],
         "//conditions:default": [],
     })`,
 			}),
-			MakeBazelTarget("java_library", "example_import-neverlink", AttrNameToString{
-				"exports":     `[":example_import"]`,
-				"neverlink":   `True`,
-				"sdk_version": `"none"`,
+			MakeBazelTarget("java_import", "example_import", AttrNameToString{
+				"jars": `[":example_import-jars"]`,
+			}),
+			MakeBazelTarget("java_import", "example_import-neverlink", AttrNameToString{
+				"jars":      `[":example_import-jars"]`,
+				"neverlink": `True`,
 			}),
 		}})
 }
@@ -117,13 +121,15 @@
 }
 `,
 		ExpectedBazelTargets: []string{
-			MakeBazelTarget("java_import", "example_import", AttrNameToString{
-				"jars": `["import.jar"]`,
+			MakeBazelTarget("filegroup", "example_import-jars", AttrNameToString{
+				"srcs": `["import.jar"]`,
 			}),
-			MakeBazelTarget("java_library", "example_import-neverlink", AttrNameToString{
-				"exports":     `[":example_import"]`,
-				"neverlink":   `True`,
-				"sdk_version": `"none"`,
+			MakeBazelTarget("java_import", "example_import", AttrNameToString{
+				"jars": `[":example_import-jars"]`,
+			}),
+			MakeBazelTarget("java_import", "example_import-neverlink", AttrNameToString{
+				"jars":      `[":example_import-jars"]`,
+				"neverlink": `True`,
 			}),
 		}})
 }
@@ -142,13 +148,15 @@
 }
 `,
 		ExpectedBazelTargets: []string{
-			MakeBazelTarget("java_import", "test_lib", AttrNameToString{
-				"jars": `["test.jar"]`,
+			MakeBazelTarget("filegroup", "test_lib-jars", AttrNameToString{
+				"srcs": `["test.jar"]`,
 			}),
-			MakeBazelTarget("java_library", "test_lib-neverlink", AttrNameToString{
-				"exports":     `[":test_lib"]`,
-				"neverlink":   `True`,
-				"sdk_version": `"none"`,
+			MakeBazelTarget("java_import", "test_lib", AttrNameToString{
+				"jars": `[":test_lib-jars"]`,
+			}),
+			MakeBazelTarget("java_import", "test_lib-neverlink", AttrNameToString{
+				"jars":      `[":test_lib-jars"]`,
+				"neverlink": `True`,
 			}),
 		},
 	}, func(ctx android.RegistrationContext) {
diff --git a/java/java.go b/java/java.go
index 990a084..0594a8b 100644
--- a/java/java.go
+++ b/java/java.go
@@ -3403,9 +3403,14 @@
 	return libName
 }
 
-type bazelJavaImportAttributes struct {
-	Jars    bazel.LabelListAttribute
-	Exports bazel.LabelListAttribute
+type importAttributes struct {
+	Jars      bazel.LabelListAttribute
+	Exports   bazel.LabelListAttribute
+	Neverlink *bool
+}
+
+type filegroupAttrs struct {
+	Srcs bazel.LabelListAttribute
 }
 
 // java_import bp2Build converter.
@@ -3421,28 +3426,36 @@
 		}
 	}
 
-	attrs := &bazelJavaImportAttributes{
-		Jars: jars,
+	name := android.RemoveOptionalPrebuiltPrefix(i.Name())
+	filegroupTargetName := name + "-jars"
+
+	ctx.CreateBazelTargetModule(
+		bazel.BazelTargetModuleProperties{
+			Rule_class:        "filegroup",
+			Bzl_load_location: "//build/bazel/rules:filegroup.bzl",
+		},
+		android.CommonAttributes{Name: filegroupTargetName},
+		&filegroupAttrs{
+			Srcs: jars,
+		},
+	)
+
+	attrs := &importAttributes{
+		Jars: bazel.MakeSingleLabelListAttribute(bazel.Label{Label: ":" + filegroupTargetName}),
 	}
 	props := bazel.BazelTargetModuleProperties{
 		Rule_class:        "java_import",
 		Bzl_load_location: "//build/bazel/rules/java:import.bzl",
 	}
 
-	name := android.RemoveOptionalPrebuiltPrefix(i.Name())
-
 	ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: name}, attrs)
 
-	neverlink := true
-	neverlinkAttrs := &javaLibraryAttributes{
-		Neverlink: bazel.BoolAttribute{Value: &neverlink},
-		Exports:   bazel.MakeSingleLabelListAttribute(bazel.Label{Label: ":" + name}),
-		javaCommonAttributes: &javaCommonAttributes{
-			Sdk_version: bazel.StringAttribute{Value: proptools.StringPtr("none")},
-		},
+	neverlinkAttrs := &importAttributes{
+		Jars:      attrs.Jars,
+		Neverlink: proptools.BoolPtr(true),
 	}
 	ctx.CreateBazelTargetModule(
-		javaLibraryBazelTargetModuleProperties(),
+		props,
 		android.CommonAttributes{Name: name + "-neverlink"},
 		neverlinkAttrs)
 }
