이전에는 API 문서를 노션에서 관리하였다. 여러 개발자가 다같이 설계하기에는 노션이 편리하기는 하나, 개발이 완료된 이후에는 사용하기에 불편한 점이 있다.

따라서 별도의 API 문서 자동화 과정을 거치기로 하였다. 자동화 도구로는 RestDocs 와 Swagger 가 주로 언급이 되는데 프로덕션 코드와 완전히 독립적인 RestDocs 를 선택하였다.

적용 과정은 Spring Rest Docs 공식 문서를 참고하였다.

1. 의존성 추가 (build.gradle)

plugins { 
	id "org.asciidoctor.jvm.convert" version "3.3.2" // (1)
}

configurations {
	asciidoctorExt // (2)
}

dependencies {
	asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor:{project-version}' // (3)
	testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc:{project-version}' // (4)
}

ext { 
	snippetsDir = file('build/generated-snippets') // (5)
}

test { 
	outputs.dir snippetsDir // (6)
}

asciidoctor { // (7)
	inputs.dir snippetsDir 
	configurations 'asciidoctorExt' 
	dependsOn test // (8)
}

2. Jar 파일에 문서 추가

bootJar {
	dependsOn asciidoctor // (1)
	from ("${asciidoctor.outputDir}/html5") { // (2)
		into 'static/docs'
	}
}

공식문서에서는 위의 예시만 포함되어 있다. 이는 .jar 이 실제로 만들어지는 배포 환경에서는 제대로 동작하나, 로컬에서 build 시에는 문서를 확인할 수 없다. 따라서 다음과 같이 별도의 copy 작업이 필요하다.