2021년 07월 29일 TIL

less than 1 minute read

오늘은 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'

Categories:

Updated: