Springboot API 문서도구로 Spring Rest Docs를 이용하면서 build.gradle 설정에서 주의할 점을 finalizedBy 개념과 함께 알아보자.
[ 기존 build.gradle ]
build {
dependsOn copyDocs
}
task copyDocs {
dependsOn asciidoctor
from file ("build/asciidoc/html")
into file ("src/main/resources/static/docs")
}
build 를 시작하면, dependsOn 에 의해 copyDocs 부터 실행이 된다. copyDocs는 build 폴더에 있는 Spring Rest Docs snippets 문서를 src/main/resources~ 폴더로 복사하는 작업이다. 여기서 문제가 되는 것은 copyDocs 태스크를 실행하기 위해서 build 폴더가 존재해야한다는 점이다. 그러나 build 폴더는 build를 수행한 뒤에야 생성되기 때문에 위 파일은 논리적으로 틀린 build.gradle 파일이라고 할 수 있다.
[ 변경 후 build.gradle ]
build {
finalizedBy copyDocs
}
task copyDocs {
dependsOn asciidoctor
from file ("build/asciidoc/html")
into file ("src/main/resources/static/docs")
}
dependsOn 대신 finalizedBy 를 이용한다. 두 차이는 아래에 설명하겠다. finalizedBy 에 의해 build 폴더가 생성된 후 copyDocs 태스크가 수행된다.
[ 태스크 체이닝 방법 2가지 ]
- dependsOn : 특정 태스크와 함께 동작한다.
- finalizedBy : 특정 태스크 이후에 동작한다.
[ gradle 동작 순서 ]
1) Initialization
2) Configuration - 보통 task 는 이 단계에서 동작한다.
3) Execution - task 에서 doFirst(), doLast() 프로퍼티를 설정할 시 이 단계에서 동작한다.
[ 샘플 ]
'Dev > Spring Boot' 카테고리의 다른 글
[Validation] 정규식 여부에 따른 @Email 동작 이슈 (0) | 2022.07.17 |
---|---|
[Validation] Bean Validation 을 이용한 검증 (0) | 2022.07.17 |
JUnit4 기반 Spring Rest Docs 작성 방법 (0) | 2022.03.22 |
application.yml 위치 변경하기 (0) | 2022.02.17 |
Maven Spring boot h2 데이터베이스 연결 (0) | 2022.02.13 |