diff options
3 files changed, 13 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java index 0037212924..e5c2cde4a3 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java @@ -483,7 +483,13 @@ final class JavaInfoBuildHelper { JavaRuleOutputJarsProvider.Builder outputJarsBuilder = JavaRuleOutputJarsProvider.builder(); - Artifact outputSourceJar = getSourceJar(skylarkRuleContext.getRuleContext(), outputJar); + boolean generateMergedSourceJar = + (sourceJars.size() > 1 || !sourceFiles.isEmpty()) + || (sourceJars.isEmpty() && sourceFiles.isEmpty() && !exports.isEmpty()); + Artifact outputSourceJar = + generateMergedSourceJar + ? getSourceJar(skylarkRuleContext.getRuleContext(), outputJar) + : sourceJars.get(0); JavaInfo.Builder javaInfoBuilder = JavaInfo.Builder.create(); JavaCompilationArtifacts artifacts = @@ -493,7 +499,7 @@ final class JavaInfoBuildHelper { javaRuntimeInfo, SkylarkList.createImmutable(ImmutableList.of()), outputJarsBuilder, - /*createOutputSourceJar=*/ true, + /*createOutputSourceJar*/ generateMergedSourceJar, outputSourceJar, javaInfoBuilder); diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java index 2220aa73b0..6a28c8c991 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java @@ -546,12 +546,12 @@ public class JavaSkylarkApiTest extends BuildViewTestCase { ConfiguredTarget configuredTarget = getConfiguredTarget("//java/test:custom"); JavaInfo info = configuredTarget.get(JavaInfo.PROVIDER); SkylarkList<Artifact> sourceJars = info.getSourceJars(); - assertThat(artifactFilesNames(sourceJars)).containsExactly("libcustom-src.jar"); + assertThat(artifactFilesNames(sourceJars)).containsExactly("myjar-src.jar"); JavaRuleOutputJarsProvider outputJars = info.getOutputJars(); assertThat(outputJars.getOutputJars()).hasSize(1); OutputJar outputJar = outputJars.getOutputJars().get(0); assertThat((outputJar.getClassJar().getFilename())).isEqualTo("libcustom.jar"); - assertThat((outputJar.getSrcJar().getFilename())).isEqualTo("libcustom-src.jar"); + assertThat((outputJar.getSrcJar().getFilename())).isEqualTo("myjar-src.jar"); assertThat((outputJar.getIJar().getFilename())).isEqualTo("libcustom-hjar.jar"); assertThat(outputJars.getJdeps().getFilename()).isEqualTo("libcustom.jdeps"); } diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java index 4ad570e326..7d8f1fa1fd 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java @@ -308,7 +308,7 @@ public class SkylarkJavaLiteProtoLibraryTest extends BuildViewTestCase { JavaSourceJarsProvider sourceJarsProvider = getProvider(JavaSourceJarsProvider.class, rule); assertThat(sourceJarsProvider).isNotNull(); assertThat(prettyArtifactNames(sourceJarsProvider.getSourceJars())) - .containsExactly("x/libproto_lib-lite-src.jar"); + .containsExactly("x/proto_lib-lite-src.jar"); ImmutableListMultimap<String, Artifact> runtimeJars = Multimaps.index(compilationArgs.getRuntimeJars(), ROOT_RELATIVE_PATH_STRING); @@ -458,7 +458,7 @@ public class SkylarkJavaLiteProtoLibraryTest extends BuildViewTestCase { getProvider(JavaSourceJarsProvider.class, getConfiguredTarget("//x:foo_lite_pb2")); assertThat(sourceJarsProvider).isNotNull(); assertThat(prettyArtifactNames(sourceJarsProvider.getSourceJars())) - .containsExactly("x/libfoo-lite-src.jar"); + .containsExactly("x/foo-lite-src.jar"); } { @@ -474,7 +474,7 @@ public class SkylarkJavaLiteProtoLibraryTest extends BuildViewTestCase { getProvider(JavaSourceJarsProvider.class, getConfiguredTarget("//x:bar_lite_pb2")); assertThat(sourceJarsProvider).isNotNull(); assertThat(prettyArtifactNames(sourceJarsProvider.getSourceJars())) - .containsExactly("x/libbar-lite-src.jar"); + .containsExactly("x/bar-lite-src.jar"); } } |