Dokka Gradle 플러그인 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의 권장 모범 사례(best practices)를 따릅니다:
- Gradle 타입을 채택하여 성능이 향상되었습니다.
- 저수준(low-level)의 태스크 기반 설정 대신 직관적인 최상위 수준(top-level) DSL 설정을 사용하여 빌드 스크립트를 단순화하고 가독성을 높였습니다.
- 문서 집계(aggregation)에 대해 더욱 선언적인 접근 방식을 취하여 멀티 프로젝트 문서 관리가 쉬워졌습니다.
- 타입 안전(type-safe) 플러그인 구성을 사용하여 빌드 스크립트의 안정성과 유지보수성을 향상시켰습니다.
- Gradle 설정 캐시(configuration cache) 및 빌드 캐시(build cache)를 완전히 지원하여 성능을 개선하고 빌드 작업을 단순화합니다.
DGP v1에서 v2 모드로의 변경 사항 및 마이그레이션에 대한 자세한 내용은 이 가이드를 읽어보세요.
시작하기 전에
마이그레이션을 시작하기 전에 다음 단계를 완료하세요.
지원 버전 확인
프로젝트가 최소 버전 요구 사항을 충족하는지 확인하세요.
| 도구 | 버전 |
|---|---|
| Gradle | 7.6 이상 |
| Android Gradle 플러그인 | 7.0 이상 |
| Kotlin Gradle 플러그인 | 1.9 이상 |
DGP v2 활성화
프로젝트의 build.gradle.kts 파일에 있는 plugins {} 블록에서 Dokka 버전을 2.1.0으로 업데이트하세요:
plugins {
kotlin("jvm") version "2.1.10"
id("org.jetbrains.dokka") version "2.1.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 및 마이그레이션 헬퍼를 활성화한 후, DGP v2가 제대로 적용되도록 프로젝트를 Gradle과 동기화하세요:
- 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의 Kotlin DSL이 타입 안전 접근자(type-safe accessors)를 사용하기 때문에 일반적인 .kt 파일(예: 커스텀 Gradle 플러그인에 사용되는 파일)과 다릅니다.
// 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")
}
}
}
}가시성 설정
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())소스 링크
생성된 문서에서 원격 저장소의 해당 소스 코드로 이동할 수 있도록 소스 링크를 구성합니다. 이 설정에는 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의 Kotlin DSL이 타입 안전 접근자(type-safe accessors)를 사용하기 때문에 일반적인 .kt 파일(예: 커스텀 Gradle 플러그인에 사용되는 파일)과 다릅니다.
// 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))외부 문서 링크
각 링크를 정의하려면 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")
}
}
}커스텀 에셋
리스트(var List<File>) 대신 파일 컬렉션 (FileCollection)과 함께 customAssets 속성을 사용하세요.
DGP v1의 설정:
customAssets = listOf(file("example.png"), file("example2.png"))DGP v2의 설정:
customAssets.from("example.png", "example2.png")출력 디렉터리
dokka {} 블록을 사용하여 생성된 Dokka 문서의 출력 디렉터리를 지정하세요.
DGP v1의 설정:
tasks.dokkaHtml {
outputDirectory.set(layout.buildDirectory.dir("dokkaDir"))
}DGP v2의 설정:
dokka {
dokkaPublications.html {
outputDirectory.set(layout.buildDirectory.dir("dokkaDir"))
}
}추가 파일의 출력 디렉터리
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의 Kotlin DSL이 타입 안전 접근자(type-safe accessors)를 사용하기 때문에 일반적인 .kt 파일(예: 커스텀 Gradle 플러그인에 사용되는 파일)과 다릅니다.
// 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 플러그인 설정
기본 내장된 Dokka 플러그인을 JSON으로 설정하는 방식은 타입 안전 DSL을 위해 더 이상 사용되지 않습니다(deprecated). 이 변경으로 Gradle의 증분 빌드(incremental build) 시스템과의 호환성이 향상되고 태스크 입력 추적이 개선되었습니다.
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 저장소를 참조하세요.
컨벤션 플러그인이 없는 멀티 모듈 프로젝트
프로젝트에서 컨벤션 플러그인(convention plugins)을 사용하지 않는 경우, 각 서브프로젝트를 직접 구성하여 Dokka 설정을 공유할 수 있습니다. 여기에는 각 서브프로젝트의 build.gradle.kts 파일에서 공유 설정을 수동으로 지정하는 작업이 포함됩니다. 이 방식은 덜 중앙 집중적이지만 컨벤션 플러그인과 같은 추가 설정이 필요하지 않습니다.
반면, 프로젝트에서 컨벤션 플러그인을 사용하는 경우, buildSrc 디렉터리에 컨벤션 플러그인을 생성한 다음 서브프로젝트에 플러그인을 적용하여 멀티 모듈 프로젝트에서 Dokka 설정을 공유할 수도 있습니다.
buildSrc 디렉터리 설정
프로젝트 루트에 다음 두 파일을 포함하는
buildSrc디렉터리를 생성합니다:settings.gradle.ktsbuild.gradle.kts
buildSrc/settings.gradle.kts파일에 다음 스니펫을 추가합니다:kotlinrootProject.name = "buildSrc"buildSrc/build.gradle.kts파일에 다음 스니펫을 추가합니다:kotlinplugins { `kotlin-dsl` } repositories { mavenCentral() gradlePluginPortal() } dependencies { implementation("org.jetbrains.dokka:dokka-gradle-plugin:2.1.0") }
Dokka 컨벤션 플러그인 설정
buildSrc 디렉터리를 설정한 후:
컨벤션 플러그인을 관리하기 위한
buildSrc/src/main/kotlin/dokka-convention.gradle.kts파일을 생성합니다.dokka-convention.gradle.kts파일에 다음 스니펫을 추가합니다:kotlinplugins { id("org.jetbrains.dokka") } dokka { // 여기에 공유 설정을 작성합니다 }dokka {}블록 내에 모든 서브프로젝트에 공통으로 적용될 공유 Dokka 설정을 추가해야 합니다. 또한 Dokka 버전을 지정할 필요가 없습니다. 버전은 이미buildSrc/build.gradle.kts파일에 설정되어 있습니다.
서브프로젝트에 컨벤션 플러그인 적용
각 서브프로젝트의 build.gradle.kts 파일에 Dokka 컨벤션 플러그인을 추가하여 프로젝트 전체에 적용합니다:
plugins {
id("dokka-convention")
}컨벤션 플러그인이 있는 멀티 모듈 프로젝트
이미 컨벤션 플러그인을 사용하고 있다면, Gradle 문서를 따라 전용 Dokka 컨벤션 플러그인을 만드세요.
그런 다음 Dokka 컨벤션 플러그인 설정 및 서브프로젝트에 적용 단계를 따르세요.
멀티 모듈 프로젝트의 문서 집계 업데이트
Dokka는 여러 서브프로젝트의 문서를 단일 출력 또는 게시물(publication)로 집계할 수 있습니다.
앞서 설명한 대로, 문서를 집계하기 전에 모든 문서화 대상 서브프로젝트에 Dokka 플러그인을 적용하세요.
DGP v2에서 집계(aggregation)는 태스크 대신 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 {
// V1 구조와 일치하도록 서브프로젝트 디렉터리를 오버라이드합니다
modulePath.set("maths")
}업데이트된 태스크로 문서 생성
DGP v2는 API 문서를 생성하는 Gradle 태스크의 이름을 변경했습니다.
DGP v1의 태스크:
./gradlew dokkaHtml
// 또는 (or)
./gradlew dokkaHtmlMultiModuleDGP v2의 태스크:
./gradlew :dokkaGeneratedokkaGenerate 태스크는 build/dokka/ 디렉터리에 API 문서를 생성합니다.
DGP v2 버전에서 dokkaGenerate 태스크 이름은 단일 모듈 및 멀티 모듈 프로젝트 모두에서 작동합니다. HTML, Javadoc 또는 HTML과 Javadoc 모두로 출력을 생성하기 위해 서로 다른 태스크를 사용할 수 있습니다. 자세한 내용은 문서 출력 형식 선택을 참조하세요.
문서 출력 형식 선택
Javadoc 출력 형식은 알파(Alpha) 단계입니다. 이를 사용할 때 버그가 발생하거나 마이그레이션 문제를 겪을 수 있습니다. Javadoc을 입력으로 받는 도구와의 성공적인 통합은 보장되지 않습니다. 사용 시 주의하시기 바랍니다.
DGP v2의 기본 출력 형식은 HTML입니다. 하지만 API 문서를 HTML, Javadoc 또는 두 형식 동시에 생성하도록 선택할 수 있습니다:
프로젝트
build.gradle.kts파일의plugins {}블록에 해당 플러그인id를 작성합니다:kotlinplugins { // HTML 문서를 생성합니다 id("org.jetbrains.dokka") version "2.1.0" // Javadoc 문서를 생성합니다 id("org.jetbrains.dokka-javadoc") version "2.1.0" // 두 플러그인 ID를 모두 유지하면 두 형식을 모두 생성합니다 }해당 Gradle 태스크를 실행합니다.
다음은 각 형식에 해당하는 플러그인 id 및 Gradle 태스크 목록입니다:
| HTML | Javadoc | 둘 다 (Both) | |
|---|---|---|---|
플러그인 id | id("org.jetbrains.dokka") | id("org.jetbrains.dokka-javadoc") | HTML 및 Javadoc 플러그인 모두 사용 |
| Gradle 태스크 | ./gradlew :dokkaGeneratePublicationHtml | ./gradlew :dokkaGeneratePublicationJavadoc | ./gradlew :dokkaGenerate |
dokkaGenerate태스크는 적용된 플러그인에 따라 사용 가능한 모든 형식의 문서를 생성합니다. HTML과 Javadoc 플러그인이 모두 적용된 경우,dokkaGeneratePublicationHtml태스크를 실행하여 HTML만 생성하거나,dokkaGeneratePublicationJavadoc태스크를 실행하여 Javadoc만 생성하도록 선택할 수 있습니다.
IntelliJ IDEA를 사용 중인 경우, dokkaGenerateHtml Gradle 태스크가 보일 수 있습니다. 이 태스크는 단순히 dokkaGeneratePublicationHtml의 별칭(alias)입니다. 두 태스크는 완전히 동일한 작업을 수행합니다.
지원 중단 및 제거 사항 처리
- 출력 형식 지원: DGP v2는 HTML 및 Javadoc 출력만 지원합니다. Markdown 및 Jekyll과 같은 실험적 형식은 더 이상 지원되지 않습니다.
- 수집기(Collector) 태스크:
DokkaCollectorTask가 제거되었습니다. 이제 각 서브프로젝트에 대해 문서를 별도로 생성한 다음, 필요한 경우 문서를 집계해야 합니다.
마이그레이션 마무리
프로젝트를 마이그레이션한 후, 마무리를 위해 다음 단계를 수행하고 성능을 개선하세요.
옵트인(opt-in) 플래그 설정
성공적으로 마이그레이션을 마친 후, 프로젝트의 gradle.properties 파일에 헬퍼 없이 다음 옵트인 플래그를 설정하세요:
org.jetbrains.dokka.experimental.gradle.pluginMode=V2EnabledDGP v2에서 더 이상 사용할 수 없는 DGP v1의 Gradle 태스크에 대한 참조를 제거했다면 이와 관련된 컴파일 오류가 발생하지 않아야 합니다.
빌드 캐시 및 설정 캐시 활성화
DGP v2는 이제 Gradle 빌드 캐시와 설정 캐시를 지원하여 빌드 성능을 향상시킵니다.
- 빌드 캐시를 활성화하려면 Gradle 빌드 캐시 문서의 지침을 따르세요.
- 설정 캐시를 활성화하려면 Gradle 설정 캐시 문서의 지침을 따르세요.
