Skip to content

Commit ac8a3b6

Browse files
committed
Merge branch '3.2.x' into 3.3.x
Closes gh-41268
2 parents 7f2e8f8 + 365fdfe commit ac8a3b6

File tree

3 files changed

+39
-32
lines changed

3 files changed

+39
-32
lines changed

buildSrc/src/main/java/org/springframework/boot/build/MavenPublishingConventions.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import org.apache.maven.artifact.repository.MavenArtifactRepository;
2020
import org.gradle.api.Project;
2121
import org.gradle.api.attributes.Usage;
22-
import org.gradle.api.component.AdhocComponentWithVariants;
23-
import org.gradle.api.component.ConfigurationVariantDetails;
2422
import org.gradle.api.plugins.JavaPlugin;
2523
import org.gradle.api.plugins.JavaPluginExtension;
2624
import org.gradle.api.publish.PublishingExtension;
@@ -101,7 +99,6 @@ private void customizePom(MavenPom pom, Project project) {
10199
}
102100

103101
private void customizeJavaMavenPublication(MavenPublication publication, Project project) {
104-
addMavenOptionalFeature(publication, project);
105102
if (publication.getName().equals("pluginMaven")) {
106103
return;
107104
}
@@ -111,29 +108,6 @@ private void customizeJavaMavenPublication(MavenPublication publication, Project
111108
(strategy) -> strategy.usage(Usage.JAVA_RUNTIME, VariantVersionMappingStrategy::fromResolutionResult));
112109
}
113110

114-
/**
115-
* Add a feature that allows maven plugins to declare optional dependencies that
116-
* appear in the POM. This is required to make m2e in Eclipse happy.
117-
* @param publication the project's Maven publication
118-
* @param project the project to add the feature to
119-
*/
120-
private void addMavenOptionalFeature(MavenPublication publication, Project project) {
121-
JavaPluginExtension extension = project.getExtensions().getByType(JavaPluginExtension.class);
122-
extension.registerFeature("mavenOptional",
123-
(feature) -> feature.usingSourceSet(extension.getSourceSets().getByName("main")));
124-
AdhocComponentWithVariants javaComponent = (AdhocComponentWithVariants) project.getComponents()
125-
.findByName("java");
126-
javaComponent.addVariantsFromConfiguration(
127-
project.getConfigurations().findByName("mavenOptionalRuntimeElements"),
128-
ConfigurationVariantDetails::mapToOptional);
129-
suppressMavenOptionalFeatureWarnings(publication);
130-
}
131-
132-
private void suppressMavenOptionalFeatureWarnings(MavenPublication publication) {
133-
publication.suppressPomMetadataWarningsFor("mavenOptionalApiElements");
134-
publication.suppressPomMetadataWarningsFor("mavenOptionalRuntimeElements");
135-
}
136-
137111
private void customizeOrganization(MavenPomOrganization organization) {
138112
organization.getName().set("VMware, Inc.");
139113
organization.getUrl().set("https://spring.io");

buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/MavenPluginPlugin.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
import org.gradle.api.artifacts.result.ResolvedArtifactResult;
5555
import org.gradle.api.attributes.DocsType;
5656
import org.gradle.api.attributes.Usage;
57+
import org.gradle.api.component.AdhocComponentWithVariants;
58+
import org.gradle.api.component.SoftwareComponent;
5759
import org.gradle.api.file.CopySpec;
5860
import org.gradle.api.file.DirectoryProperty;
5961
import org.gradle.api.file.FileCollection;
@@ -65,6 +67,7 @@
6567
import org.gradle.api.publish.PublishingExtension;
6668
import org.gradle.api.publish.maven.MavenPublication;
6769
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
70+
import org.gradle.api.publish.tasks.GenerateModuleMetadata;
6871
import org.gradle.api.tasks.Classpath;
6972
import org.gradle.api.tasks.InputFiles;
7073
import org.gradle.api.tasks.JavaExec;
@@ -82,11 +85,14 @@
8285
import org.gradle.api.tasks.javadoc.Javadoc;
8386
import org.gradle.external.javadoc.StandardJavadocDocletOptions;
8487
import org.w3c.dom.Document;
88+
import org.w3c.dom.Element;
8589
import org.w3c.dom.Node;
90+
import org.w3c.dom.NodeList;
8691
import org.xml.sax.SAXException;
8792

8893
import org.springframework.boot.build.DeployedPlugin;
8994
import org.springframework.boot.build.MavenRepositoryPlugin;
95+
import org.springframework.boot.build.optional.OptionalDependenciesPlugin;
9096
import org.springframework.boot.build.test.DockerTestPlugin;
9197
import org.springframework.boot.build.test.IntegrationTestPlugin;
9298
import org.springframework.core.CollectionFactory;
@@ -116,6 +122,33 @@ public void apply(Project project) {
116122
addDocumentPluginGoalsTask(project, generatePluginDescriptorTask);
117123
addPrepareMavenBinariesTask(project);
118124
addExtractVersionPropertiesTask(project);
125+
publishOptionalDependenciesInPom(project);
126+
project.getTasks().withType(GenerateModuleMetadata.class).configureEach((task) -> task.setEnabled(false));
127+
}
128+
129+
private void publishOptionalDependenciesInPom(Project project) {
130+
project.getPlugins().withType(OptionalDependenciesPlugin.class, (optionalDependencies) -> {
131+
SoftwareComponent component = project.getComponents().findByName("java");
132+
if (component instanceof AdhocComponentWithVariants componentWithVariants) {
133+
componentWithVariants.addVariantsFromConfiguration(
134+
project.getConfigurations().getByName(OptionalDependenciesPlugin.OPTIONAL_CONFIGURATION_NAME),
135+
(variant) -> variant.mapToOptional());
136+
}
137+
});
138+
MavenPublication publication = (MavenPublication) project.getExtensions()
139+
.getByType(PublishingExtension.class)
140+
.getPublications()
141+
.getByName("maven");
142+
publication.getPom().withXml((xml) -> {
143+
Element root = xml.asElement();
144+
NodeList children = root.getChildNodes();
145+
for (int i = 0; i < children.getLength(); i++) {
146+
Node child = children.item(i);
147+
if ("dependencyManagement".equals(child.getNodeName())) {
148+
root.removeChild(child);
149+
}
150+
}
151+
});
119152
}
120153

121154
private void configurePomPackaging(Project project) {

spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/build.gradle

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ dependencies {
4747
implementation("org.springframework:spring-core")
4848
implementation("org.springframework:spring-context")
4949

50+
optional("org.apache.maven.plugins:maven-shade-plugin") {
51+
exclude(group: "javax.annotation", module: "javax.annotation-api")
52+
exclude(group: "javax.enterprise", module: "cdi-api")
53+
exclude(group: "javax.inject", module: "javax.inject")
54+
}
55+
5056
testImplementation("org.apache.maven:maven-core") {
5157
exclude(group: "javax.annotation", module: "javax.annotation-api")
5258
exclude(group: "javax.inject", module: "javax.inject")
@@ -71,12 +77,6 @@ dependencies {
7177
intTestImplementation("org.assertj:assertj-core")
7278
intTestImplementation("org.junit.jupiter:junit-jupiter")
7379

74-
mavenOptionalImplementation("org.apache.maven.plugins:maven-shade-plugin") {
75-
exclude(group: "javax.annotation", module: "javax.annotation-api")
76-
exclude(group: "javax.enterprise", module: "cdi-api")
77-
exclude(group: "javax.inject", module: "javax.inject")
78-
}
79-
8080
mavenRepository(project(path: ":spring-boot-project:spring-boot", configuration: "mavenRepository"))
8181
mavenRepository(project(path: ":spring-boot-project:spring-boot-test", configuration: "mavenRepository"))
8282
mavenRepository(project(path: ":spring-boot-project:spring-boot-devtools", configuration: "mavenRepository"))

0 commit comments

Comments
 (0)