Skip to content

Commit 07fb4b0

Browse files
committed
Merge branch '2.3.x'
Closes gh-21940
2 parents 0c03118 + 0de466e commit 07fb4b0

File tree

92 files changed

+122
-194
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+122
-194
lines changed

buildSrc/build.gradle

-4
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,6 @@ gradlePlugin {
5454
id = "org.springframework.boot.conventions"
5555
implementationClass = "org.springframework.boot.build.ConventionsPlugin"
5656
}
57-
dependencyManagementPlugin {
58-
id = "org.springframework.boot.internal-dependency-management"
59-
implementationClass = "org.springframework.boot.build.InternalDependencyManagementPlugin"
60-
}
6157
deployedPlugin {
6258
id = "org.springframework.boot.deployed"
6359
implementationClass = "org.springframework.boot.build.DeployedPlugin"

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

-60
This file was deleted.

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

+26
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.io.File;
1919
import java.util.Arrays;
20+
import java.util.Collections;
2021
import java.util.List;
2122
import java.util.Map;
2223
import java.util.TreeMap;
@@ -25,8 +26,12 @@
2526
import io.spring.javaformat.gradle.FormatTask;
2627
import io.spring.javaformat.gradle.SpringJavaFormatPlugin;
2728
import org.gradle.api.Project;
29+
import org.gradle.api.artifacts.Configuration;
30+
import org.gradle.api.artifacts.ConfigurationContainer;
31+
import org.gradle.api.artifacts.Dependency;
2832
import org.gradle.api.artifacts.DependencySet;
2933
import org.gradle.api.plugins.JavaBasePlugin;
34+
import org.gradle.api.plugins.JavaPlugin;
3035
import org.gradle.api.plugins.quality.CheckstyleExtension;
3136
import org.gradle.api.plugins.quality.CheckstylePlugin;
3237
import org.gradle.api.tasks.bundling.Jar;
@@ -36,6 +41,7 @@
3641
import org.gradle.testretry.TestRetryPlugin;
3742
import org.gradle.testretry.TestRetryTaskExtension;
3843

44+
import org.springframework.boot.build.optional.OptionalDependenciesPlugin;
3945
import org.springframework.boot.build.testing.TestFailuresPlugin;
4046

4147
/**
@@ -60,6 +66,7 @@
6066
* <li>{@code Implementation-Title}
6167
* <li>{@code Implementation-Version}
6268
* </ul>
69+
* <li>{@code spring-boot-parent} is used for dependency management</li>
6370
* </ul>
6471
*
6572
* <p/>
@@ -80,6 +87,7 @@ void apply(Project project) {
8087
configureJavadocConventions(project);
8188
configureTestConventions(project);
8289
configureJarManifestConventions(project);
90+
configureDependencyManagement(project);
8391
});
8492
}
8593

@@ -164,4 +172,22 @@ private void configureSpringJavaFormat(Project project) {
164172
.add(project.getDependencies().create("io.spring.javaformat:spring-javaformat-checkstyle:" + version));
165173
}
166174

175+
private void configureDependencyManagement(Project project) {
176+
ConfigurationContainer configurations = project.getConfigurations();
177+
Configuration dependencyManagement = configurations.create("dependencyManagement", (configuration) -> {
178+
configuration.setVisible(false);
179+
configuration.setCanBeConsumed(false);
180+
configuration.setCanBeResolved(false);
181+
});
182+
configurations
183+
.matching((configuration) -> configuration.getName().endsWith("Classpath")
184+
|| JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME.equals(configuration.getName()))
185+
.all((configuration) -> configuration.extendsFrom(dependencyManagement));
186+
Dependency springBootParent = project.getDependencies().enforcedPlatform(project.getDependencies()
187+
.project(Collections.singletonMap("path", ":spring-boot-project:spring-boot-parent")));
188+
dependencyManagement.getDependencies().add(springBootParent);
189+
project.getPlugins().withType(OptionalDependenciesPlugin.class, (optionalDependencies) -> configurations
190+
.getByName(OptionalDependenciesPlugin.OPTIONAL_CONFIGURATION_NAME).extendsFrom(dependencyManagement));
191+
}
192+
167193
}

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

+21-3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import org.apache.maven.artifact.repository.MavenArtifactRepository;
2020
import org.gradle.api.Project;
21+
import org.gradle.api.attributes.Usage;
2122
import org.gradle.api.plugins.JavaPlugin;
2223
import org.gradle.api.plugins.JavaPluginExtension;
2324
import org.gradle.api.publish.PublishingExtension;
@@ -40,8 +41,12 @@
4041
* it.
4142
* <li>The poms of all {@link MavenPublication Maven publications} are customized to meet
4243
* Maven Central's requirements.
43-
* <li>If the {@link JavaPlugin Java plugin} has also been applied, creation of Javadoc
44-
* and source jars is enabled.
44+
* <li>If the {@link JavaPlugin Java plugin} has also been applied:
45+
* <ul>
46+
* <li>Creation of Javadoc and source jars is enabled.
47+
* <li>Publication metadata (poms and Gradle module metadata) is configured to use
48+
* resolved versions.
49+
* </ul>
4550
* </ul>
4651
*
4752
* <p/>
@@ -62,7 +67,7 @@ void apply(Project project) {
6267
});
6368
}
6469
publishing.getPublications().withType(MavenPublication.class)
65-
.all((mavenPublication) -> customizePom(mavenPublication.getPom(), project));
70+
.all((mavenPublication) -> customizeMavenPublication(mavenPublication, project));
6671
project.getPlugins().withType(JavaPlugin.class).all((javaPlugin) -> {
6772
JavaPluginExtension extension = project.getExtensions().getByType(JavaPluginExtension.class);
6873
extension.withJavadocJar();
@@ -71,6 +76,12 @@ void apply(Project project) {
7176
});
7277
}
7378

79+
private void customizeMavenPublication(MavenPublication publication, Project project) {
80+
customizePom(publication.getPom(), project);
81+
project.getPlugins().withType(JavaPlugin.class)
82+
.all((javaPlugin) -> customizeJavaMavenPublication(publication, project));
83+
}
84+
7485
private void customizePom(MavenPom pom, Project project) {
7586
pom.getUrl().set("https://spring.io/projects/spring-boot");
7687
pom.getName().set(project.provider(project::getName));
@@ -82,6 +93,13 @@ private void customizePom(MavenPom pom, Project project) {
8293
pom.issueManagement(this::customizeIssueManagement);
8394
}
8495

96+
private void customizeJavaMavenPublication(MavenPublication publication, Project project) {
97+
publication.versionMapping((strategy) -> strategy.usage(Usage.JAVA_API, (mappingStrategy) -> mappingStrategy
98+
.fromResolutionOf(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME)));
99+
publication.versionMapping((strategy) -> strategy.usage(Usage.JAVA_RUNTIME,
100+
(mappingStrategy) -> mappingStrategy.fromResolutionResult()));
101+
}
102+
85103
private void customizeOrganization(MavenPomOrganization organization) {
86104
organization.getName().set("Pivotal Software, Inc.");
87105
organization.getUrl().set("https://spring.io");

buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java

-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929

3030
import org.springframework.boot.build.ConventionsPlugin;
3131
import org.springframework.boot.build.DeployedPlugin;
32-
import org.springframework.boot.build.InternalDependencyManagementPlugin;
3332
import org.springframework.boot.build.classpath.CheckClasspathForConflicts;
3433
import org.springframework.boot.build.classpath.CheckClasspathForProhibitedDependencies;
3534
import org.springframework.util.StringUtils;
@@ -47,7 +46,6 @@ public void apply(Project project) {
4746
plugins.apply(DeployedPlugin.class);
4847
plugins.apply(JavaLibraryPlugin.class);
4948
plugins.apply(ConventionsPlugin.class);
50-
plugins.apply(InternalDependencyManagementPlugin.class);
5149
StarterMetadata starterMetadata = project.getTasks().create("starterMetadata", StarterMetadata.class);
5250
ConfigurationContainer configurations = project.getConfigurations();
5351
Configuration runtimeClasspath = configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME);

buildSrc/src/test/java/org/springframework/boot/build/ConventionsPluginTests.java

+11
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,17 @@ class ConventionsPluginTests {
5151
void setup(@TempDir File projectDir) throws IOException {
5252
this.projectDir = projectDir;
5353
this.buildFile = new File(this.projectDir, "build.gradle");
54+
File settingsFile = new File(this.projectDir, "settings.gradle");
55+
try (PrintWriter out = new PrintWriter(new FileWriter(settingsFile))) {
56+
out.println("include ':spring-boot-project:spring-boot-parent'");
57+
}
58+
File springBootParent = new File(this.projectDir, "spring-boot-project/spring-boot-parent/build.gradle");
59+
springBootParent.getParentFile().mkdirs();
60+
try (PrintWriter out = new PrintWriter(new FileWriter(springBootParent))) {
61+
out.println("plugins {");
62+
out.println(" id 'java-platform'");
63+
out.println("}");
64+
}
5465
}
5566

5667
@Test

spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle

+3-5
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,21 @@ plugins {
55
id "org.springframework.boot.auto-configuration"
66
id "org.springframework.boot.conventions"
77
id "org.springframework.boot.deployed"
8-
id "org.springframework.boot.internal-dependency-management"
98
id "org.springframework.boot.optional-dependencies"
109
}
1110

1211
description = "Spring Boot Actuator AutoConfigure"
1312

1413
configurations {
15-
asciidoctorExtensions
14+
asciidoctorExtensions {
15+
extendsFrom dependencyManagement
16+
}
1617
documentation
1718
}
1819

1920
dependencies {
20-
asciidoctorExtensions(platform(project(":spring-boot-project:spring-boot-dependencies")))
2121
asciidoctorExtensions("org.springframework.restdocs:spring-restdocs-asciidoctor")
2222

23-
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
2423
api(project(":spring-boot-project:spring-boot-actuator"))
2524

2625
api(project(":spring-boot-project:spring-boot"))
@@ -29,7 +28,6 @@ dependencies {
2928
implementation("com.fasterxml.jackson.core:jackson-databind")
3029
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
3130

32-
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
3331
optional("ch.qos.logback:logback-classic")
3432
optional("com.datastax.oss:java-driver-core")
3533
optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")

spring-boot-project/spring-boot-actuator/build.gradle

-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@ plugins {
99
description = "Spring Boot Actuator"
1010

1111
dependencies {
12-
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
1312
api(project(":spring-boot-project:spring-boot"))
1413

15-
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
1614
optional("com.datastax.oss:java-driver-core")
1715
optional("com.fasterxml.jackson.core:jackson-databind")
1816
optional("com.github.ben-manes.caffeine:caffeine")

spring-boot-project/spring-boot-autoconfigure/build.gradle

-4
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,14 @@ plugins {
44
id "org.springframework.boot.auto-configuration"
55
id "org.springframework.boot.conventions"
66
id "org.springframework.boot.deployed"
7-
id "org.springframework.boot.internal-dependency-management"
87
id "org.springframework.boot.optional-dependencies"
98
}
109

1110
description = "Spring Boot AutoConfigure"
1211

1312
dependencies {
1413
api(project(":spring-boot-project:spring-boot"))
15-
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
1614

17-
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
1815
optional("com.atomikos:transactions-jdbc")
1916
optional("com.atomikos:transactions-jta")
2017
optional("com.fasterxml.jackson.core:jackson-databind")
@@ -151,7 +148,6 @@ dependencies {
151148
optional("org.thymeleaf.extras:thymeleaf-extras-springsecurity5")
152149
optional("redis.clients:jedis")
153150

154-
testImplementation(platform(project(":spring-boot-project:spring-boot-parent")))
155151
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
156152
testImplementation(project(":spring-boot-project:spring-boot-test"))
157153
testImplementation("ch.qos.logback:logback-classic")

spring-boot-project/spring-boot-cli/build.gradle

-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ plugins {
33
id "org.springframework.boot.deployed"
44
id "org.springframework.boot.conventions"
55
id "org.springframework.boot.integration-test"
6-
id "org.springframework.boot.internal-dependency-management"
76
}
87

98
description = "Spring Boot CLI"
@@ -22,7 +21,6 @@ dependencies {
2221

2322
dependenciesBom(project(path: ":spring-boot-project:spring-boot-dependencies", configuration: "effectiveBom"))
2423

25-
implementation(platform(project(":spring-boot-project:spring-boot-parent")))
2624
implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools"))
2725
implementation("com.vaadin.external.google:android-json")
2826
implementation("jline:jline")
@@ -50,7 +48,6 @@ dependencies {
5048
implementation("org.springframework:spring-core")
5149
implementation("org.springframework.security:spring-security-crypto")
5250

53-
intTestImplementation(platform(project(":spring-boot-project:spring-boot-dependencies")))
5451
intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools"))
5552
intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
5653
intTestImplementation("org.assertj:assertj-core")

spring-boot-project/spring-boot-devtools/build.gradle

+3-4
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@ plugins {
44
id "org.springframework.boot.conventions"
55
id "org.springframework.boot.deployed"
66
id "org.springframework.boot.integration-test"
7-
id "org.springframework.boot.internal-dependency-management"
87
id "org.springframework.boot.optional-dependencies"
98
}
109

1110
description = "Spring Boot Developer Tools"
1211

1312
configurations {
14-
intTestDependencies
13+
intTestDependencies {
14+
extendsFrom dependencyManagement
15+
}
1516
}
1617

1718
dependencies {
18-
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
1919
api(project(":spring-boot-project:spring-boot"))
2020
api(project(":spring-boot-project:spring-boot-autoconfigure"))
2121

@@ -32,7 +32,6 @@ dependencies {
3232

3333
intTestRuntimeOnly("org.springframework:spring-web")
3434

35-
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
3635
optional("javax.servlet:javax.servlet-api")
3736
optional("org.apache.derby:derby")
3837
optional("org.hibernate:hibernate-core")

spring-boot-project/spring-boot-docs/build.gradle

+3-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ description = "Spring Boot Docs"
1010

1111
configurations {
1212
actuatorApiDocumentation
13-
asciidoctorExtensions
13+
asciidoctorExtensions {
14+
extendsFrom dependencyManagement
15+
}
1416
autoConfiguration
1517
configurationProperties
1618
gradlePluginDocumentation
@@ -40,7 +42,6 @@ plugins.withType(EclipsePlugin) {
4042
dependencies {
4143
actuatorApiDocumentation(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure", configuration: "documentation"))
4244

43-
asciidoctorExtensions(platform(project(":spring-boot-project:spring-boot-parent")))
4445
asciidoctorExtensions("io.spring.asciidoctor:spring-asciidoctor-extensions-spring-boot")
4546
asciidoctorExtensions(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure"))
4647
asciidoctorExtensions(project(path: ":spring-boot-project:spring-boot-autoconfigure"))

spring-boot-project/spring-boot-parent/build.gradle

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ plugins {
22
id "java-platform"
33
id "org.springframework.boot.conventions"
44
id "org.springframework.boot.deployed"
5-
id "org.springframework.boot.internal-dependency-management"
65
}
76

87
description = "Spring Boot Parent"

spring-boot-project/spring-boot-properties-migrator/build.gradle

-2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@ plugins {
22
id "java-library"
33
id "org.springframework.boot.conventions"
44
id "org.springframework.boot.deployed"
5-
id "org.springframework.boot.internal-dependency-management"
65
}
76

87
description = "Spring Boot Properties Migrator"
98

109
dependencies {
11-
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
1210
api(project(":spring-boot-project:spring-boot"))
1311
api(project(":spring-boot-project:spring-boot-tools:spring-boot-configuration-metadata"))
1412

0 commit comments

Comments
 (0)