-
Spring Rest docs 적용개발/Spring 2020. 11. 19. 11:12
dependencies { testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc") asciidoctor("org.springframework.restdocs:spring-restdocs-asciidoctor") // restdocs asciidoctor의 extension을 사용하기 위한 의존성 추가 }
Rest docs를 사용하기 위해서는 위 의존성만 추가하면 된다.
하지만 .adoc 파일을 .html 파일로 바꾸어서 build된 파일의 특정 폴더(static)에 해당 파일 이동시키기 위해 plugin 설정이 필요한데 여기서 꽤 애를 먹었다.
우선 위와 같은 작업을 하기위해서는 asciidoctor.convert plugin이 필요하다.
plugins { id("org.asciidoctor.convert") version "1.5.9.2" }
위와 같이 plugin을 추가해준다. 현재 3.x 버전이 최신버전이며 우아한형제들 기술블로그를 참고하여 1.5.9.2 버전을 사용했다.
Rest docs 기능을 클라이언트에게 제공하기 위해서는 빌드과정에 아래와 같은 과정이 필요하다.
- snippet 생성
- .adoc -> .html 변환
- .html로 변환 된 파일을 static 폴더로 이동(복사)
gradle의 task에 설정해주어 위 과정을 진행한다.
대부분의 예제 코드에서 3번 과정을 BootJar task에서 진행하였는데 몇번을 빌드하여도 .html 파일이 생성은되나 원하는 폴더에 복사가 되지는 않았다.
tasks.withType<org.asciidoctor.gradle.AsciidoctorTask> { dependsOn(tasks.withType<Test>()) doLast { copy { from("${asciidoctor.outputDir}/html5") into("$buildDir/resources/main/static/docs") } } } val asciidoctor = tasks.getByName("asciidoctor") as org.asciidoctor.gradle.AsciidoctorTask tasks.withType<org.springframework.boot.gradle.tasks.bundling.BootJar> { dependsOn(tasks.withType<org.asciidoctor.gradle.AsciidoctorTask>()) }
위와 같이 복사하는 과정을 AsciidoctorTask로 이동하여서 해결하였다.
예상되는 이유는 여러가지 경우의수로 테스트해본 결과 build된 파일이 생성되기전에 복사를 시도하여 복사가 되지않는것으로 판단하였다.'개발 > Spring' 카테고리의 다른 글
Spring PSA (0) 2020.02.02 Spring AOP (0) 2020.02.02 Spring 개념 정리 (0) 2020.02.02