diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/MavenPublishingConventionsPlugin.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/MavenPublishingConventionsPlugin.java index cd43a718..357acca8 100644 --- a/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/MavenPublishingConventionsPlugin.java +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/MavenPublishingConventionsPlugin.java @@ -126,11 +126,30 @@ public class MavenPublishingConventionsPlugin implements Plugin { javaComponent.addVariantsFromConfiguration( project.getConfigurations().findByName("mavenOptionalRuntimeElements"), ConfigurationVariantDetails::mapToOptional); + skipPublishingOfMavenOptionalRuntimeElements(javaComponent, project); + } + + /** + * Workaround bug in SigningPlugin where it attempts to sign 'java-classes-dir' and 'java-resources-dir' + * from the 'mavenOptionalRuntimeElements' and 'mavenOptionalRuntimeElementsResources', respectively. + * + * Approach is to use {@link AdhocComponentWithVariants#withVariantsFromConfiguration} and skip publishing of the + * unwanted elements. + * + * @param javaComponent the Java component from JavaPlugin + * @param project the Gradle project being applied to + */ + private void skipPublishingOfMavenOptionalRuntimeElements(AdhocComponentWithVariants javaComponent, Project project) { + javaComponent.withVariantsFromConfiguration( + project.getConfigurations().findByName("mavenOptionalRuntimeElements"), + ConfigurationVariantDetails::skip); } private void suppressMavenOptionalFeatureWarnings(MavenPublication publication) { publication.suppressPomMetadataWarningsFor("mavenOptionalApiElements"); publication.suppressPomMetadataWarningsFor("mavenOptionalRuntimeElements"); + publication.suppressPomMetadataWarningsFor("mavenOptionalRuntimeElementsClasses"); + publication.suppressPomMetadataWarningsFor("mavenOptionalRuntimeElementsResources"); } diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/PublishAllJavaComponentsPlugin.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/PublishAllJavaComponentsPlugin.java index 3e236bc0..e0c4451a 100644 --- a/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/PublishAllJavaComponentsPlugin.java +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/publish/PublishAllJavaComponentsPlugin.java @@ -1,8 +1,5 @@ package org.springframework.pulsar.gradle.publish; -import java.util.LinkedHashSet; -import java.util.stream.Collectors; - import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.plugins.JavaPlatformPlugin; @@ -17,27 +14,12 @@ public class PublishAllJavaComponentsPlugin implements Plugin { public void apply(Project project) { project.getPlugins().withType(MavenPublishPlugin.class).all((mavenPublish) -> { PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); - - // To get around some weirdness w/ the Signing plugin attempting to use java-classes-dir and java-resources-dir - // as artifacts to sign, we load the artifacts into a hidden dummy MavenPublication using from(components.java) - // and then filter out the unwanted artifacts. Finally, we add those to the actual mavenJava artifact. - // NOTE: If MavenPublication.setArtifacts is called after MavenPublication.from then downstream issues will - // occur when building due to artifacts modified exceptions. - - var filteredMainArtifacts = new LinkedHashSet<>(); - var hiddenMavenJavaPub = publishing.getPublications().create("hiddenMavenJava", MavenPublication.class, maven -> { + publishing.getPublications().create("mavenJava", MavenPublication.class, mavenPublication -> { project.getPlugins().withType(JavaPlugin.class, (plugin) -> { - maven.from(project.getComponents().getByName("java")); - filteredMainArtifacts.addAll(maven.getArtifacts().stream().filter((ma) -> ma.getFile().isFile()).collect(Collectors.toSet())); - }); - }); - publishing.getPublications().remove(hiddenMavenJavaPub); - publishing.getPublications().create("mavenJava", MavenPublication.class, maven -> { - project.getPlugins().withType(JavaPlugin.class, (plugin) -> { - filteredMainArtifacts.forEach((ma) -> maven.artifact(ma)); + mavenPublication.from(project.getComponents().getByName("java")); }); project.getPlugins().withType(JavaPlatformPlugin.class, (plugin) -> { - maven.from(project.getComponents().getByName("javaPlatform")); + mavenPublication.from(project.getComponents().getByName("javaPlatform")); }); }); });