Dokka Gradle 플러그인 v2로 마이그레이션하기
Dokka Gradle 플러그인 v2로 마이그레이션하기 (Migrate to Dokka Gradle plugin v2)
Dokka Gradle 플러그인(DGP)을 v1에서 v2로 올리는 과정을 정리한 문서예요. 어떤 것이 바뀌었는지, 설정을 어떻게 옮겨야 하는지 차근차근 살펴볼게요.
본문
이 페이지는 DGPv1을 쓰고 있고 DGPv2로 마이그레이션하려는 분들만 해당돼요. Dokka 2.1.0부터 DGP v2가 기본으로 활성화되어 있어요. Dokka 2.1.0 이상을 쓰고 있다면 이 페이지는 건너뛰고 바로 Dokka Gradle 문서로 가면 돼요.
Dokka Gradle 플러그인(DGP)은 Gradle로 빌드되는 Kotlin 프로젝트의 포괄적인 API 문서를 생성하는 도구예요.
DGP는 Kotlin의 KDoc 주석과 Java의 Javadoc 주석을 모두 매끄럽게 처리해서 정보를 추출하고, HTML 또는 Javadoc 형식으로 구조화된 문서를 만들어요.
Dokka Gradle 플러그인 v2 모드는 기본으로 활성화되어 있고 Gradle 모범 사례에 부합해요:
- Gradle 타입을 채택해서 성능이 더 좋아요.
- 저수준의 태스크 기반 설정 대신 직관적인 최상위 DSL 설정을 사용해서 빌드 스크립트와 그 가독성이 단순해져요.
- 문서 집계(aggregation)에 더 선언적인 접근을 취해서 멀티 프로젝트 문서를 관리하기 쉬워져요.
- 타입 안전한 플러그인 설정을 사용해서 빌드 스크립트의 신뢰성과 유지 관리성이 좋아져요.
- Gradle configuration cache와 build cache를 완전히 지원해서 성능이 좋아지고 빌드 작업이 단순해져요.
DGP v1에서 v2로의 변경 사항과 마이그레이션에 대한 자세한 내용은 이 가이드를 읽어보세요.
시작하기 전에 (Before you start)
마이그레이션을 시작하기 전에 다음 단계를 완료해야 해요.
지원 버전 확인하기
프로젝트가 최소 버전 요구 사항을 충족하는지 확인해 주세요:
| Tool | Version |
|---|---|
| Gradle | 7.6 이상 |
| Android Gradle 플러그인 | 7.0 이상 |
| Kotlin Gradle 플러그인 | 1.9 이상 |
DGP v2 활성화하기
프로젝트의 build.gradle.kts 파일에 있는 plugins {} 블록에서 Dokka 버전을 2.2.0으로 업데이트해 주세요:
plugins {
kotlin("jvm") version "2.1.10"
id("org.jetbrains.dokka") version "2.2.0"
}
또는 version catalog를 사용해서 Dokka Gradle 플러그인 v2를 활성화할 수도 있어요.
기본적으로 DGP v2는 HTML 형식으로 문서를 생성해요. Javadoc이나 HTML·Javadoc 두 형식 모두 생성하려면 해당 플러그인을 추가해야 해요. 플러그인에 대한 자세한 내용은 문서 출력 형식 선택을 참고해요.
마이그레이션 헬퍼 활성화하기
프로젝트의 gradle.properties 파일에 다음 Gradle 프로퍼티를 설정해서 DGP v2를 헬퍼와 함께 활성화할 수 있어요:
org.jetbrains.dokka.experimental.gradle.pluginMode=V2EnabledWithHelpers
프로젝트에 gradle.properties 파일이 없다면 프로젝트 루트 디렉토리에 새로 만들어 주세요.
이 프로퍼티는 마이그레이션 헬퍼가 포함된 DGP v2 플러그인을 활성화해요. 이 헬퍼들은 빌드 스크립트가 DGP v2에서 더 이상 사용할 수 없는 DGP v1 태스크를 참조할 때 컴파일 오류가 나는 것을 막아줘요.
마이그레이션 헬퍼는 마이그레이션을 적극적으로 도와주지는 않아요. 새 API로 전환하는 동안 빌드 스크립트가 깨지지 않게 지켜줄 뿐이에요.
마이그레이션을 마친 뒤에는 마이그레이션 헬퍼 비활성화를 진행해 주세요.
프로젝트를 Gradle과 동기화하기
DGP v2와 마이그레이션 헬퍼를 활성화한 뒤에는 프로젝트를 Gradle과 동기화해서 DGP v2가 제대로 적용되도록 해야 해요:
- IntelliJ IDEA를 쓴다면 Gradle 도구 창에서 Reload All Gradle Projects 버튼을 클릭해요.
- Android Studio를 쓴다면 File | Sync Project with Gradle Files를 선택해요.
프로젝트 마이그레이션하기
Dokka Gradle 플러그인을 v2로 업데이트한 뒤에는 여러분의 프로젝트 상황에 맞는 마이그레이션 단계를 따라가세요.
설정 옵션 조정하기
DGP v2는 Gradle 설정 옵션에서 몇 가지 변경 사항을 도입해요. build.gradle.kts 파일에서 프로젝트 설정에 맞게 설정 옵션을 조정해 주세요.
DGP v2의 최상위 DSL 설정
DGP v1의 설정 문법을 DGP v2의 최상위 dokka {} DSL 설정으로 바꿔 주세요:
DGP v1 설정:
tasks.withType<DokkaTask>().configureEach {
suppressInheritedMembers.set(true)
failOnWarning.set(true)
dokkaSourceSets {
named("main") {
moduleName.set("Project Name")
includes.from("README.md")
sourceLink {
localDirectory.set(file("src/main/kotlin"))
remoteUrl.set(URL("https://example.com/src"))
remoteLineSuffix.set("#L")
}
}
}
}
tasks.dokkaHtml {
pluginConfiguration<DokkaBase, DokkaBaseConfiguration> {
customStyleSheets.set(listOf("styles.css"))
customAssets.set(listOf("logo.png"))
footerMessage.set("(c) Your Company")
}
}
DGP v2 설정:
build.gradle.kts 파일의 문법은 커스텀 Gradle 플러그인에 쓰는 일반 .kt 파일과 달라요. Gradle의 Kotlin DSL이 타입 안전 접근자(type-safe accessors)를 사용하기 때문이에요.
// build.gradle.kts
dokka {
moduleName.set("Project Name")
dokkaPublications.html {
suppressInheritedMembers.set(true)
failOnWarning.set(true)
}
dokkaSourceSets.main {
includes.from("README.md")
sourceLink {
localDirectory.set(file("src/main/kotlin"))
remoteUrl("https://example.com/src")
remoteLineSuffix.set("#L")
}
}
pluginsConfiguration.html {
customStyleSheets.from("styles.css")
customAssets.from("logo.png")
footerMessage.set("(c) Your Company")
}
}
// CustomPlugin.kt
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.jetbrains.dokka.gradle.DokkaExtension
import org.jetbrains.dokka.gradle.engine.plugins.DokkaHtmlPluginParameters
abstract class CustomPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.plugins.apply("org.jetbrains.dokka")
project.extensions.configure(DokkaExtension::class.java) { dokka ->
dokka.dokkaPublications.named("html") { publication ->
publication.suppressInheritedMembers.set(true)
publication.failOnWarning.set(true)
}
dokka.dokkaSourceSets.named("main") { dss ->
dss.includes.from("README.md")
dss.sourceLink {
it.localDirectory.set(project.file("src/main/kotlin"))
it.remoteUrl("https://example.com/src")
it.remoteLineSuffix.set("#L")
}
}
dokka.pluginsConfiguration.named("html", DokkaHtmlPluginParameters::class.java) { html ->
html.customStyleSheets.from("styles.css")
html.customAssets.from("logo.png")
html.footerMessage.set("(c) Your Company")
}
}
}
}
가시성 설정 (Visibility settings)
documentedVisibilities 프로퍼티를 Visibility.PUBLIC에서 VisibilityModifier.Public으로 바꿔 주세요.
DGP v1 설정:
import org.jetbrains.dokka.DokkaConfiguration.Visibility
// ...
documentedVisibilities.set(
setOf(Visibility.PUBLIC)
)
DGP v2 설정:
import org.jetbrains.dokka.gradle.engine.parameters.VisibilityModifier
// ...
documentedVisibilities.set(
setOf(VisibilityModifier.Public)
)
// OR
documentedVisibilities(VisibilityModifier.Public)
추가로, DGP v2의 유틸리티 함수를 사용해서 문서화할 가시성을 추가할 수 있어요:
fun documentedVisibilities(vararg visibilities: VisibilityModifier): Unit =
documentedVisibilities.set(visibilities.asList())
소스 링크 (Source links)
생성된 문서에서 원격 저장소의 해당 소스 코드로 이동할 수 있게 소스 링크를 설정해 주세요. 이 설정에는 dokkaSourceSets.main{} 블록을 사용해요.
DGP v1 설정:
tasks.withType<DokkaTask>().configureEach {
dokkaSourceSets {
named("main") {
sourceLink {
localDirectory.set(file("src/main/kotlin"))
remoteUrl.set(URL("https://github.com/your-repo"))
remoteLineSuffix.set("#L")
}
}
}
}
DGP v2 설정:
build.gradle.kts 파일의 문법은 커스텀 Gradle 플러그인에 쓰는 일반 .kt 파일과 달라요. Gradle의 Kotlin DSL이 타입 안전 접근자를 사용하기 때문이에요.
// build.gradle.kts
dokka {
dokkaSourceSets.main {
sourceLink {
localDirectory.set(file("src/main/kotlin"))
remoteUrl("https://github.com/your-repo")
remoteLineSuffix.set("#L")
}
}
}
// CustomPlugin.kt
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.jetbrains.dokka.gradle.DokkaExtension
abstract class CustomPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.plugins.apply("org.jetbrains.dokka")
project.extensions.configure(DokkaExtension::class.java) { dokka ->
dokka.dokkaSourceSets.named("main") { dss ->
dss.includes.from("README.md")
dss.sourceLink {
it.localDirectory.set(project.file("src/main/kotlin"))
it.remoteUrl("https://example.com/src")
it.remoteLineSuffix.set("#L")
}
}
}
}
}
소스 링크 설정이 바뀌었기 때문에, 원격 URL을 지정할 때 URL 대신 URI 클래스를 사용해 주세요.
DGP v1 설정:
remoteUrl.set(URL("https://github.com/your-repo"))
DGP v2 설정:
remoteUrl.set(URI("https://github.com/your-repo"))
// or
remoteUrl("https://github.com/your-repo")
추가로 DGP v2에는 URL을 설정하는 유틸리티 함수가 두 개 있어요:
fun remoteUrl(@Language("http-url-reference") value: String): Unit =
remoteUrl.set(URI(value))
// and
fun remoteUrl(value: Provider<String>): Unit =
remoteUrl.set(value.map(::URI))
외부 문서 링크 (External documentation links)
각 링크를 정의하려면 register() 메서드를 사용해서 외부 문서 링크를 등록해 주세요. externalDocumentationLinks API는 Gradle DSL 규칙에 맞춰 이 메서드를 사용해요.
DGP v1 설정:
tasks.dokkaHtml {
dokkaSourceSets {
configureEach {
externalDocumentationLink {
url = URL("https://example.com/docs/")
packageListUrl = File("/path/to/package-list").toURI().toURL()
}
}
}
}
DGP v2 설정:
dokka {
dokkaSourceSets.configureEach {
externalDocumentationLinks.register("example-docs") {
url("https://example.com/docs/")
packageListUrl("https://example.com/docs/package-list")
}
}
}
커스텀 assets (Custom assets)
목록(var List<File>) 대신 customAssets 프로퍼티와 파일 컬렉션(FileCollection)을 사용해 주세요.
DGP v1 설정:
customAssets = listOf(file("example.png"), file("example2.png"))
DGP v2 설정:
customAssets.from("example.png", "example2.png")
출력 디렉토리 (Output directory)
생성된 Dokka 문서의 출력 디렉토리를 지정하려면 dokka {} 블록을 사용해 주세요.
DGP v1 설정:
tasks.dokkaHtml {
outputDirectory.set(layout.buildDirectory.dir("dokkaDir"))
}
DGP v2 설정:
dokka {
dokkaPublications.html {
outputDirectory.set(layout.buildDirectory.dir("dokkaDir"))
}
}
추가 파일의 출력 디렉토리 (Output directory for additional files)
단일 모듈과 멀티 모듈 프로젝트 모두에 대해 dokka {} 블록 안에서 출력 디렉토리를 지정하고 추가 파일을 포함해 주세요.
DGP v2에서는 단일 모듈과 멀티 모듈 프로젝트의 설정이 통합되었어요. dokkaHtml과 dokkaHtmlMultiModule 태스크를 따로 설정하는 대신, dokka {} 블록 안의 dokkaPublications.html {}에서 설정을 지정해요.
멀티 모듈 프로젝트에서는 루트 프로젝트의 설정에서 출력 디렉토리를 지정하고 README.md 같은 추가 파일을 포함해 주세요.
DGP v1 설정:
tasks.dokkaHtmlMultiModule {
outputDirectory.set(rootDir.resolve("docs/api/0.x"))
includes.from(project.layout.projectDirectory.file("README.md"))
}
DGP v2 설정:
build.gradle.kts 파일의 문법은 커스텀 Gradle 플러그인에 쓰는 일반 .kt 파일과 달라요. Gradle의 Kotlin DSL이 타입 안전 접근자를 사용하기 때문이에요.
// build.gradle.kts
dokka {
dokkaPublications.html {
outputDirectory.set(rootDir.resolve("docs/api/0.x"))
includes.from(project.layout.projectDirectory.file("README.md"))
}
}
// CustomPlugin.kt
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.jetbrains.dokka.gradle.DokkaExtension
abstract class CustomPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.plugins.apply("org.jetbrains.dokka")
project.extensions.configure(DokkaExtension::class.java) { dokka ->
dokka.dokkaPublications.named("html") { html ->
html.outputDirectory.set(project.rootDir.resolve("docs/api/0.x"))
html.includes.from(project.layout.projectDirectory.file("README.md"))
}
}
}
}
Dokka 플러그인 설정하기
JSON으로 내장 Dokka 플러그인을 설정하는 방식은 타입 안전 DSL을 위해 더 이상 권장되지 않아요. 이 변경은 Gradle의 증분 빌드 시스템과의 호환성을 개선하고 태스크 입력 추적을 좋게 해요.
DGP v1 설정:
DGP v1에서는 Dokka 플러그인을 JSON으로 수동 설정했어요. 이 방법은 Gradle의 up-to-date 검사에서 태스크 입력 등록에 문제를 일으켰어요.
Dokka Versioning 플러그인에 대한, 이제는 권장되지 않는 JSON 기반 설정 예시를 보여드릴게요:
tasks.dokkaHtmlMultiModule {
pluginsMapConfiguration.set(
mapOf(
"org.jetbrains.dokka.versioning.VersioningPlugin" to """
{ "version": "1.2", "olderVersionsDir": "$projectDir/dokka-docs" }
""".trimIndent()
)
)
}
DGP v2 설정:
DGP v2에서는 Dokka 플러그인을 타입 안전 DSL로 설정해요. 타입 안전 방식으로 Dokka 플러그인을 설정하려면 pluginsConfiguration{} 블록을 사용해 주세요:
dokka {
pluginsConfiguration {
versioning {
version.set("1.2")
olderVersionsDir.set(projectDir.resolve("dokka-docs"))
}
}
}
DGP v2 설정의 예시는 Dokka의 versioning 플러그인에서 확인할 수 있어요.
DGP v2는 커스텀 플러그인을 설정해서 기능을 확장할 수 있게 해줘요. 커스텀 플러그인은 문서 생성 과정에 추가 처리나 수정을 할 수 있게 해줘요.
서브프로젝트 간 Dokka 설정 공유하기
DGP v2는 서브프로젝트 간 설정을 공유하기 위해 subprojects {}나 allprojects {}를 사용하는 방식에서 벗어나요. 앞으로의 Gradle 버전에서는 이런 접근이 오류를 일으킬 거예요.
멀티 모듈 프로젝트에서 Dokka 설정을 제대로 공유하려면 다음 단계를 따라가세요 — 컨벤션 플러그인이 있는 경우와 없는 경우로 나뉘어요.
Dokka 설정을 공유한 뒤에는 여러 서브프로젝트의 문서를 하나의 출력으로 집계할 수 있어요. 자세한 내용은 멀티 모듈 프로젝트의 문서 집계 업데이트를 참고해요.
멀티 모듈 프로젝트 예시는 Dokka GitHub 저장소에서 볼 수 있어요.
컨벤션 플러그인이 없는 멀티 모듈 프로젝트
프로젝트가 컨벤션 플러그인을 쓰지 않는다면, 각 서브프로젝트를 직접 설정해서 Dokka 설정을 공유할 수 있어요. 이는 각 서브프로젝트의 build.gradle.kts 파일에 공유 설정을 수동으로 구성하는 것이에요. 이 방식은 중앙화가 덜 되지만, 컨벤션 플러그인 같은 추가 설정이 필요 없다는 장점이 있어요.
한편 프로젝트가 컨벤션 플러그인을 쓴다면, buildSrc 디렉토리에 컨벤션 플러그인을 만들어서 서브프로젝트에 적용하는 방식으로 멀티 모듈 프로젝트의 Dokka 설정을 공유할 수도 있어요.
buildSrc 디렉토리 설정하기
-
프로젝트 루트에
buildSrc디렉토리를 만들고 두 파일을 넣어 주세요:settings.gradle.ktsbuild.gradle.kts
-
buildSrc/settings.gradle.kts파일에 다음 스니펫을 추가해 주세요:
rootProject.name = "buildSrc"
buildSrc/build.gradle.kts파일에 다음 스니펫을 추가해 주세요:
plugins {
`kotlin-dsl`
}
repositories {
mavenCentral()
gradlePluginPortal()
}
dependencies {
implementation("org.jetbrains.dokka:dokka-gradle-plugin:2.2.0")
}
Dokka 컨벤션 플러그인 설정하기
buildSrc 디렉토리를 설정한 뒤에는:
-
컨벤션 플러그인을 담을
buildSrc/src/main/kotlin/dokka-convention.gradle.kts파일을 만들어 주세요. -
dokka-convention.gradle.kts파일에 다음 스니펫을 추가해 주세요:
plugins {
id("org.jetbrains.dokka")
}
dokka {
// The shared configuration goes here
}
모든 서브프로젝트에 공통인 Dokka 설정을 dokka {} 블록 안에 추가해 주세요. Dokka 버전은 buildSrc/build.gradle.kts 파일에 이미 설정되어 있으므로 별도로 지정할 필요가 없어요.
컨벤션 플러그인을 서브프로젝트에 적용하기
각 서브프로젝트의 build.gradle.kts 파일에 추가해서 Dokka 컨벤션 플러그인을 서브프로젝트 전체에 적용해 주세요:
plugins {
id("dokka-convention")
}
컨벤션 플러그인이 있는 멀티 모듈 프로젝트
이미 컨벤션 플러그인이 있다면, Gradle의 문서를 따라 전용 Dokka 컨벤션 플러그인을 만들어 주세요.
그런 다음 Dokka 컨벤션 플러그인 설정과 서브프로젝트에 적용 단계를 따라가 주세요.
멀티 모듈 프로젝트의 문서 집계 업데이트하기
Dokka는 여러 서브프로젝트의 문서를 하나의 출력이나 publication으로 집계할 수 있어요.
앞서 설명한 것처럼, 문서를 집계하기 전에 모든 문서화 대상 서브프로젝트에 Dokka 플러그인을 적용해 주세요.
DGP v2의 집계는 태스크 대신 dependencies {} 블록을 사용하며, 어떤 build.gradle.kts 파일에나 추가할 수 있어요.
DGP v1에서는 집계가 루트 프로젝트에서 암묵적으로 만들어졌어요. DGP v2에서도 같은 동작을 하려면 루트 프로젝트의 build.gradle.kts 파일에 dependencies {} 블록을 추가해 주세요.
DGP v1의 집계:
tasks.dokkaHtmlMultiModule {
// ...
}
DGP v2의 집계:
dependencies {
dokka(project(":some-subproject:"))
dokka(project(":another-subproject:"))
}
집계 문서의 디렉토리 변경하기
DGP가 서브프로젝트를 집계할 때, 각 서브프로젝트는 집계된 문서 안에 고유한 하위 디렉토리를 가져요.
DGP v2에서는 집계 메커니즘이 Gradle 규칙에 더 잘 맞도록 업데이트되었어요. DGP v2는 이제 서브프로젝트 디렉토리를 그대로 유지해서, 어느 위치에서든 문서를 집계할 때 충돌을 방지해요.
DGP v1의 집계 디렉토리:
DGP v1에서는 집계된 문서가 축소된 디렉토리 구조에 배치됐어요. 예를 들어 :turbo-lib에 집계가 있고 중첩 서브프로젝트 :turbo-lib:maths가 있는 프로젝트라면, 생성된 문서는 다음 위치에 배치됐어요:
turbo-lib/build/dokka/html/maths/
DGP v2의 집계 디렉토리:
DGP v2는 전체 프로젝트 구조를 유지해서 각 서브프로젝트가 고유한 디렉토리를 갖도록 보장해요. 같은 집계 문서는 이제 다음과 같은 구조를 따릅니다:
turbo-lib/build/dokka/html/turbo-lib/maths/
이 변경으로 같은 이름을 가진 서브프로젝트끼리 충돌하는 것을 막을 수 있어요. 다만 디렉토리 구조가 바뀌었으므로 외부 링크가 낡아서 404 오류를 일으킬 수도 있어요.
DGP v1 디렉토리 동작으로 되돌리기
프로젝트가 DGP v1에서 쓰던 디렉토리 구조에 의존하고 있다면, 서브프로젝트 디렉토리를 수동으로 지정해서 이 동작을 되돌릴 수 있어요. 각 서브프로젝트의 build.gradle.kts 파일에 다음 설정을 추가해 주세요:
// /turbo-lib/maths/build.gradle.kts
plugins {
id("org.jetbrains.dokka")
}
dokka {
// Overrides the subproject directory to match the V1 structure
modulePath.set("maths")
}
업데이트된 태스크로 문서 생성하기
DGP v2는 API 문서를 생성하는 Gradle 태스크의 이름을 바꿨어요.
DGP v1의 태스크:
./gradlew dokkaHtml
// or
./gradlew dokkaHtmlMultiModule
DGP v2의 태스크:
./gradlew :dokkaGenerate
dokkaGenerate 태스크는 build/dokka/ 디렉토리에 API 문서를 생성해요.
DGP v2 버전에서 dokkaGenerate 태스크 이름은 단일 모듈과 멀티 모듈 프로젝트 모두에서 동작해요. HTML, Javadoc, 또는 HTML·Javadoc 두 형식 모두를 생성하려면 각각 다른 태스크를 쓸 수 있어요. 자세한 내용은 문서 출력 형식 선택을 참고해요.
문서 출력 형식 선택하기
Javadoc 출력 형식은 Alpha 단계예요. 이 형식을 쓰면 버그가 생기거나 마이그레이션 문제를 겪을 수 있어요. Javadoc을 입력으로 받는 도구와의 성공적인 통합도 보장되지 않아요. 사용에 따른 위험은 본인이 감수하세요.
DGP v2의 기본 출력 형식은 HTML이에요. 하지만 API 문서를 HTML, Javadoc, 또는 두 형식을 동시에 생성하도록 선택할 수 있어요:
- 프로젝트의
build.gradle.kts파일에 있는plugins {}블록에 해당 플러그인id를 넣어 주세요:
plugins {
// Generates HTML documentation
id("org.jetbrains.dokka") version "2.2.0"
// Generates Javadoc documentation
id("org.jetbrains.dokka-javadoc") version "2.2.0"
// Keeping both plugin IDs generates both formats
}
- 해당 Gradle 태스크를 실행해 주세요.
각 형식에 해당하는 플러그인 id와 Gradle 태스크 목록이에요:
| HTML | Javadoc | Both | |
|---|---|---|---|
| Plugin id | id("org.jetbrains.dokka") | id("org.jetbrains.dokka-javadoc") | HTML·Javadoc 플러그인 모두 사용 |
| Gradle task | ./gradlew :dokkaGeneratePublicationHtml | ./gradlew :dokkaGeneratePublicationJavadoc | ./gradlew :dokkaGenerate |
dokkaGenerate 태스크는 적용된 플러그인을 기반으로 사용 가능한 모든 형식으로 문서를 생성해요. HTML과 Javadoc 플러그인을 모두 적용했다면, dokkaGeneratePublicationHtml 태스크를 실행해서 HTML만, 또는 dokkaGeneratePublicationJavadoc 태스크를 실행해서 Javadoc만 생성하도록 선택할 수 있어요.
IntelliJ IDEA를 쓴다면 dokkaGenerateHtml이라는 Gradle 태스크가 보일 수도 있어요. 이 태스크는 단순히 dokkaGeneratePublicationHtml의 별칭이에요. 두 태스크는 정확히 같은 작업을 수행해요.
deprecated와 삭제 처리하기
- 출력 형식 지원: DGP v2는 HTML과 Javadoc 출력만 지원해요. Markdown이나 Jekyll 같은 실험적인 형식은 더 이상 지원되지 않아요.
- Collector 태스크:
DokkaCollectorTask가 삭제되었어요. 이제 각 서브프로젝트의 문서를 따로 생성한 다음, 필요하다면 문서를 집계해야 해요.
마이그레이션 마무리하기
프로젝트 마이그레이션을 마친 뒤에는 다음 단계를 수행해서 마무리하고 성능을 개선해 주세요.
옵트인 플래그 설정하기
마이그레이션을 성공적으로 마친 뒤에는 프로젝트의 gradle.properties 파일에 헬퍼 없는 다음 옵트인 플래그를 설정해 주세요:
org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
DGP v2에서 더 이상 사용할 수 없는 DGP v1의 Gradle 태스크 참조를 제거했다면, 그와 관련된 컴파일 오류도 보이지 않을 거예요.
빌드 캐시와 configuration cache 활성화하기
DGP v2는 이제 Gradle 빌드 캐시와 configuration cache를 지원해서 빌드 성능을 개선해요.
- 빌드 캐시를 활성화하려면 Gradle build cache 문서의 지침을 따라가세요.
- configuration cache를 활성화하려면 Gradle configuration cache 문서의 지침을 따라가세요.
다음 단계
더 알아보기
- Maven 플러그인으로 Dokka를 쓰는 방법은 Dokka Maven 문서를 참고해요.
- Dokka 플러그인 적용과 확장은 Dokka plugins에서 배워요.