실행 환경

Spring Rest Docs

Gradle 설정

plugins {
    id 'org.springframework.boot' version '2.7.1'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'org.asciidoctor.jvm.convert' version '3.3.2'. // (1)
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    asciidoctorExtensions   // (2)
}

repositories {
    mavenCentral()
}

ext {
    set('snippetsDir', file("build/generated-snippets")) // (3)
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    asciidoctorExtensions 'org.springframework.restdocs:spring-restdocs-asciidoctor' // (4)
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc' // (5)
}

tasks.named('test') {
    outputs.dir snippetsDir
    useJUnitPlatform()
}

tasks.named('asciidoctor') {  // (6)
    configurations 'asciidoctorExtensions'
    sources{
        include("**/index.adoc")
    }
    baseDirFollowsSourceFile()
    inputs.dir snippetsDir
    dependsOn test
}

asciidoctor.doFirst {     //(7)
    delete file('src/main/resources/static/docs')
}

task createDocument(type: Copy) {       // (8)
    dependsOn asciidoctor

    from file("build/docs/asciidoc")
    into file("src/main/resources/static")
}

bootJar {       // (9)
    dependsOn createDocument
}

적용

@RestController
public class TestController {

	@GetMapping("/users")
	public ResponseEntity<TestResponse> get() {
		return ResponseEntity.ok(new TestResponse("test"));
	}