아래의 흐름과 같이 동작한다.

제목 없는 그림 (1).jpg

설정

아래는 build.gradle 파일이다.

plugins {
	id 'org.springframework.boot' version '2.7.1'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id "org.asciidoctor.jvm.convert" version "3.3.2" // (1)
	id 'java'
}

group = 'com.codestates'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
	mavenCentral()
}

// (2)
ext {
	set('snippetsDir', file("build/generated-snippets"))
}

// (3)
configurations {
	asciidoctorExtensions
}

dependencies {
	testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'

// (4)
	asciidoctorExtensions 'org.springframework.restdocs:spring-restdocs-asciidoctor'

	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	implementation 'org.mapstruct:mapstruct:1.5.1.Final'
	annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.1.Final'
	implementation 'org.springframework.boot:spring-boot-starter-mail'

	implementation 'com.google.code.gson:gson'
}

// (5)
tasks.named('test') {
	outputs.dir snippetsDir
	useJUnitPlatform()
}

// (6)
tasks.named('asciidoctor') {
	configurations "asciidoctorExtensions"
	inputs.dir snippetsDir
	dependsOn test
}

// (7)
task copyDocument(type: Copy) {
	dependsOn asciidoctor
	println "asciidoctor output: ${asciidoctor.outputDir}"
	from file("build/docs/asciidoc/")
	into file("src/main/resources/static/docs")
}

//(8)
build {
	dependsOn copyDocument
}

//(9)
bootJar {
	enabled = true
	dependsOn copyDocument
	from ("${asciidoctor.outputDir}/html5") {
		into 'static/docs'
	}
}