Skip to content

Commit 98a2433

Browse files
committed
Only add spring-milestones repo for Boot < 4.0
Closes gh-1674
1 parent 6820438 commit 98a2433

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/SpringBootVersionRepositoriesBuildCustomizer.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import io.spring.initializr.generator.buildsystem.Build;
2020
import io.spring.initializr.generator.buildsystem.MavenRepository;
2121
import io.spring.initializr.generator.version.Version;
22+
import io.spring.initializr.generator.version.VersionParser;
23+
import io.spring.initializr.generator.version.VersionRange;
2224

2325
/**
2426
* A {@link BuildCustomizer} that configures the build's repositories based on the version
@@ -41,6 +43,8 @@ class SpringBootVersionRepositoriesBuildCustomizer implements BuildCustomizer<Bu
4143
.onlySnapshots()
4244
.build();
4345

46+
private static final VersionRange SPRING_BOOT_4_0_OR_LATER = VersionParser.DEFAULT.parseRange("4.0.0-M1");
47+
4448
private final Version springBootVersion;
4549

4650
SpringBootVersionRepositoriesBuildCustomizer(Version springBootVersion) {
@@ -51,13 +55,13 @@ class SpringBootVersionRepositoriesBuildCustomizer implements BuildCustomizer<Bu
5155
public void customize(Build build) {
5256
build.repositories().add("maven-central");
5357
switch (getReleaseType()) {
54-
case MILESTONE -> addMilestoneRepository(build);
58+
case MILESTONE -> addMilestoneRepositoryIfNeeded(build);
5559
case SNAPSHOT -> {
5660
if (isMaintenanceRelease()) {
5761
addSnapshotRepository(build);
5862
}
5963
else {
60-
addMilestoneRepository(build);
64+
addMilestoneRepositoryIfNeeded(build);
6165
addSnapshotRepository(build);
6266
}
6367
}
@@ -89,7 +93,11 @@ private void addSnapshotRepository(Build build) {
8993
build.pluginRepositories().add(SPRING_SNAPSHOTS);
9094
}
9195

92-
private void addMilestoneRepository(Build build) {
96+
private void addMilestoneRepositoryIfNeeded(Build build) {
97+
if (SPRING_BOOT_4_0_OR_LATER.match(this.springBootVersion)) {
98+
// Spring Boot 4.0 and up publishes milestones to Maven Central
99+
return;
100+
}
93101
build.repositories().add(SPRING_MILESTONES);
94102
build.pluginRepositories().add(SPRING_MILESTONES);
95103
}

initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/SpringBootVersionRepositoriesBuildCustomizerTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,19 @@ void maintenanceReleasesShouldNotAddMilestoneRepository() {
103103
SpringBootVersionRepositoriesBuildCustomizer.SPRING_SNAPSHOTS);
104104
}
105105

106+
@Test
107+
void boot4ReleasesShouldNotAddMilestoneRepository() {
108+
MavenBuild build = new MavenBuild();
109+
new SpringBootVersionRepositoriesBuildCustomizer(Version.parse("4.0.0-M1")).customize(build);
110+
assertThat(build.repositories().items()).containsExactly(MavenRepository.MAVEN_CENTRAL);
111+
}
112+
113+
@Test
114+
void boot4SnapshotReleasesShouldNotAddMilestoneRepository() {
115+
MavenBuild build = new MavenBuild();
116+
new SpringBootVersionRepositoriesBuildCustomizer(Version.parse("4.0.0-SNAPSHOT")).customize(build);
117+
assertThat(build.repositories().items()).containsExactly(MavenRepository.MAVEN_CENTRAL,
118+
SpringBootVersionRepositoriesBuildCustomizer.SPRING_SNAPSHOTS);
119+
}
120+
106121
}

0 commit comments

Comments
 (0)