2021년 07월 29일 TIL
오늘은 Spring Rest Docs를 도입하면서 공식 문서상에 제시된 가이드 방법이 내 Gradle 버전과는 맞지 않았고, 그러한 부분을 해결했다.
또한 도입에 자잘한 버그(html파일이 생성되지 않음) 등의 오류가 발생하여, 그러한 부분들을 해결했다.
1. build.gradle 설정
공식문서에 의하면, 추가해야할 코드들은 아래와 같이 정리할 수 있다.
// 의존성 추가
dependencies {
asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor:{project-version}'
testCompile 'org.springframework.restdocs:spring-restdocs-mockmvc:{project-version}'
}
// Asciidoctor 플러그인을 적용하여 AsciiDoc 파일을 컨버팅합니다.
plugins {
id "org.asciidoctor.convert" version "1.5.9.2"
}
// build/generated-snippets 경로에 스니펫이 생성됩니다.
ext {
snippetsDir = file('build/generated-snippets')
}
// gradle build시 test -> asciidoctor 순으로 실행됩니다.
asciidoctor {
inputs.dir snippetsDir
dependsOn test
}
// gradle build시 ./build/asciidoc/html/ 에 html 파일이 생성됩니다.
bootJar {
dependsOn asciidoctor
from ("${asciidoctor.outputDir}/html5") {
into 'static/docs'
}
}
test {
outputs.dir snippetsDir
}
다만 이것을 그대로 적용하면 오류가 발생하는데,
참고 자료
Gradle 공식문서 : https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html#sec:configurations_java_tutorial
StackOverFlow : https://stackoverflow.com/questions/44493378/whats-the-difference-between-implementation-api-and-compile-in-gradle
compile이 deprecated 되었으며, Gradle 최신 버전에서 implemetation이 compile을 대체한다고 공식문서에서 언급되어있다.
따라서 testcompile -> testimplements로 변경합니다.
testCompile 'org.springframework.restdocs:spring-restdocs-mockmvc'
=> testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'