아래의 흐름과 같이 동작한다.
아래는 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'
}
}
.adoc
파일을 생성하기 위해 AsciiDoctor 플러그인을 설정한다.:asciidoctor
task가 실행되면 내부적으로 이 설정(asciidoctorExtensions)을 사용하게 된다.:test
task 실행 시, 아웃풋 경로를 (2)의 경로로 지정한다.