Skip to content

Commit c52d51a

Browse files
committed
Add spring-boot-restdocs to Boot 4.0 projects using REST Docs
Closes gh-1996
1 parent 6e4e630 commit c52d51a

File tree

3 files changed

+39
-8
lines changed

3 files changed

+39
-8
lines changed

start-site/src/main/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsBuildCustomizer.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818

1919
import io.spring.initializr.generator.buildsystem.Build;
2020
import io.spring.initializr.generator.buildsystem.DependencyScope;
21+
import io.spring.initializr.generator.project.ProjectDescription;
2122
import io.spring.initializr.generator.spring.build.BuildCustomizer;
23+
import io.spring.initializr.generator.version.Version;
24+
import io.spring.initializr.generator.version.VersionParser;
25+
import io.spring.initializr.generator.version.VersionRange;
2226

2327
/**
2428
* A {@link BuildCustomizer} that tunes the REST Docs dependency based on the web
@@ -28,8 +32,21 @@
2832
*/
2933
public class SpringRestDocsBuildCustomizer implements BuildCustomizer<Build> {
3034

35+
private static final VersionRange SPRING_BOOT_4_0_0_OR_LATER = VersionParser.DEFAULT.parseRange("4.0.0");
36+
37+
private final Version bootVersion;
38+
39+
public SpringRestDocsBuildCustomizer(ProjectDescription projectDescription) {
40+
this.bootVersion = projectDescription.getPlatformVersion();
41+
}
42+
3143
@Override
3244
public void customize(Build build) {
45+
if (SPRING_BOOT_4_0_0_OR_LATER.match(this.bootVersion)) {
46+
build.dependencies()
47+
.add("spring-boot-restdocs", "org.springframework.boot", "spring-boot-restdocs",
48+
DependencyScope.TEST_COMPILE);
49+
}
3350
if (switchToWebTestClient(build)) {
3451
build.dependencies().remove("restdocs");
3552
build.dependencies()

start-site/src/main/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsProjectGenerationConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
2121
import io.spring.initializr.generator.condition.ConditionalOnBuildSystem;
2222
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
23+
import io.spring.initializr.generator.project.ProjectDescription;
2324
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
2425

2526
import org.springframework.context.annotation.Bean;
@@ -36,8 +37,8 @@
3637
public class SpringRestDocsProjectGenerationConfiguration {
3738

3839
@Bean
39-
SpringRestDocsBuildCustomizer springRestDocsBuildCustomizer() {
40-
return new SpringRestDocsBuildCustomizer();
40+
SpringRestDocsBuildCustomizer springRestDocsBuildCustomizer(ProjectDescription projectDescription) {
41+
return new SpringRestDocsBuildCustomizer(projectDescription);
4142
}
4243

4344
@Bean

start-site/src/test/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsBuildCustomizerTests.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package io.spring.start.site.extension.dependency.springrestdocs;
1818

1919
import io.spring.initializr.web.project.ProjectRequest;
20+
import io.spring.start.site.SupportedBootVersion;
2021
import io.spring.start.site.extension.AbstractExtensionTests;
2122
import org.junit.jupiter.api.Test;
2223

@@ -31,26 +32,38 @@ class SpringRestDocsBuildCustomizerTests extends AbstractExtensionTests {
3132

3233
@Test
3334
void restDocsWithWebMvc() {
34-
ProjectRequest request = createProjectRequest("web", "restdocs");
35+
ProjectRequest request = createProjectRequest(SupportedBootVersion.V3_5, "web", "restdocs");
3536
assertThat(mavenPom(request))
3637
.hasDependency("org.springframework.restdocs", "spring-restdocs-mockmvc", null, "test")
37-
.doesNotHaveDependency("org.springframework.restdocs", "spring-restdocs-webtestclient");
38+
.doesNotHaveDependency("org.springframework.restdocs", "spring-restdocs-webtestclient")
39+
.doesNotHaveDependency("org.springframework.boot", "spring-boot-restdocs");
3840
}
3941

4042
@Test
4143
void restDocsWithWebFlux() {
42-
ProjectRequest request = createProjectRequest("webflux", "restdocs");
44+
ProjectRequest request = createProjectRequest(SupportedBootVersion.V3_5, "webflux", "restdocs");
4345
assertThat(mavenPom(request))
4446
.hasDependency("org.springframework.restdocs", "spring-restdocs-webtestclient", null, "test")
45-
.doesNotHaveDependency("org.springframework.restdocs", "spring-restdocs-mockmvc");
47+
.doesNotHaveDependency("org.springframework.restdocs", "spring-restdocs-mockmvc")
48+
.doesNotHaveDependency("org.springframework.boot", "spring-boot-restdocs");
4649
}
4750

4851
@Test
4952
void restDocsWithJersey() {
50-
ProjectRequest request = createProjectRequest("jersey", "restdocs");
53+
ProjectRequest request = createProjectRequest(SupportedBootVersion.V3_5, "jersey", "restdocs");
5154
assertThat(mavenPom(request))
5255
.hasDependency("org.springframework.restdocs", "spring-restdocs-webtestclient", null, "test")
53-
.doesNotHaveDependency("org.springframework.restdocs", "spring-restdocs-mockmvc");
56+
.doesNotHaveDependency("org.springframework.restdocs", "spring-restdocs-mockmvc")
57+
.doesNotHaveDependency("org.springframework.boot", "spring-boot-restdocs");
58+
}
59+
60+
@Test
61+
void restDocsWithBoot4() {
62+
ProjectRequest request = createProjectRequest(SupportedBootVersion.V4_0, "web", "restdocs");
63+
assertThat(mavenPom(request))
64+
.hasDependency("org.springframework.restdocs", "spring-restdocs-mockmvc", null, "test")
65+
.hasDependency("org.springframework.boot", "spring-boot-restdocs", null, "test")
66+
.doesNotHaveDependency("org.springframework.restdocs", "spring-restdocs-webtestclient");
5467
}
5568

5669
}

0 commit comments

Comments
 (0)