Gradle
Для создания документации проекта на основе Gradle можно использовать плагин Gradle для Dokka.
Плагин Dokka Gradle (DGP) включает базовую автоматическую настройку проекта, содержит задачи Gradle для создания документации и предоставляет параметры конфигурации для настройки выходных данных.
Вы можете поэкспериментировать с Dokka и изучить, как настроить её для различных проектов, в наших примерах проектов Gradle.
Поддерживаемые версии
Убедитесь, что ваш проект соответствует минимальным требованиям к версиям:
Инструмент |
Версия |
|---|---|
7.6 или выше |
|
7.0 или выше |
|
1.9 или выше |
Подключение Dokka
Рекомендуемый способ подключить плагин Gradle для Dokka — использовать блок plugins. Добавьте его в блок plugins {} файла build.gradle.kts вашего проекта:
plugins {
id("org.jetbrains.dokka") version "2.2.0"
}
plugins {
id 'org.jetbrains.dokka' version '2.2.0'
}
При документировании многопроектных сборок необходимо явно подключить плагин ко всем подпроектам, для которых требуется создать документацию. Можно настроить Dokka непосредственно в каждом подпроекте или использовать плагин соглашений для общей настройки Dokka во всех подпроектах. Дополнительную информацию см. в разделах о настройке однопроектных и многопроектных сборок.
Включение кэша сборки и кэша конфигурации
DGP поддерживает кэш сборки и кэш конфигурации Gradle, что повышает производительность сборки.
Чтобы включить кэш сборки, следуйте инструкциям в документации по кэшу сборки Gradle.
Чтобы включить кэш конфигурации, следуйте инструкциям в документации по кэшу конфигурации Gradle.
Создание документации
Плагин Dokka Gradle включает встроенные форматы вывода HTML и Javadoc.
Для создания документации используйте следующую задачу Gradle:
./gradlew :dokkaGenerate
Основные особенности задачи Gradle dokkaGenerate:
Эта задача создаёт документацию как для однопроектных, так и для многопроектных сборок.
По умолчанию документация создаётся в формате HTML. Также можно создать документацию в формате Javadoc или одновременно в форматах HTML и Javadoc, добавив соответствующие плагины.
Созданная документация автоматически помещается в каталог
build/dokka/htmlкак для однопроектных, так и для многопроектных сборок. Вы можете изменить расположение (outputDirectory).
Настройка формата вывода документации
Можно создавать документацию API в формате HTML, Javadoc или одновременно в обоих форматах:
-
Добавьте соответствующий плагин
idв блокplugins {}файлаbuild.gradle.ktsвашего проекта: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
Оба формата
Плагин
idid("org.jetbrains.dokka")id("org.jetbrains.dokka-javadoc")Используйте плагины HTML и Javadoc
Задача Gradle
./gradlew :dokkaGeneratePublicationHtml./gradlew :dokkaGeneratePublicationJavadoc./gradlew :dokkaGenerate
Если вы используете IntelliJ IDEA, может отображаться задача Gradle dokkaGenerateHtml. Эта задача является просто псевдонимом dokkaGeneratePublicationHtml. Обе задачи выполняют одну и ту же операцию.
Объединение выходных данных документации в многопроектных сборках
Dokka может объединить документацию нескольких подпроектов в один выходной файл или публикацию.
Перед объединением документации необходимо подключить плагин Dokka во всех подпроектах, для которых можно создать документацию.
Чтобы объединить документацию нескольких подпроектов, добавьте блок dependencies {} в файл build.gradle.kts корневого проекта:
dependencies {
dokka(project(":childProjectA:"))
dokka(project(":childProjectB:"))
}
Предположим, что проект имеет следующую структуру:
.
└── parentProject/
├── childProjectA/
│ └── demo/
│ └── ChildProjectAClass.kt
└── childProjectB/
└── demo/
└── ChildProjectBClass.kt
Созданная документация объединяется следующим образом:
Дополнительные сведения см. в нашем примере многопроектной сборки.
Каталог объединённой документации
При объединении подпроектов с помощью DGP каждый подпроект размещается в собственном подкаталоге объединённой документации. DGP обеспечивает уникальность каталога каждого подпроекта, сохраняя полную структуру проекта.
Например, если документация объединяется в :turbo-lib и проект содержит вложенный подпроект :turbo-lib:maths, созданная документация размещается по следующему пути:
turbo-lib/build/dokka/html/turbo-lib/maths/
Это поведение можно изменить, указав каталог подпроекта вручную. Добавьте следующую конфигурацию в файл build.gradle.kts каждого подпроекта:
// /turbo-lib/maths/build.gradle.kts
plugins {
id("org.jetbrains.dokka")
}
dokka {
// Overrides the subproject directory
modulePath.set("maths")
}
Эта конфигурация изменяет путь создания документации для модуля :turbo-lib:maths на turbo-lib/build/dokka/html/maths/.
Создание javadoc.jar
Если вы хотите опубликовать библиотеку в репозитории, возможно, потребуется предоставить файл javadoc.jar со справочной документацией API вашей библиотеки.
Например, если вы хотите опубликовать библиотеку в Maven Central, вы обязаны предоставить файл javadoc.jar вместе с проектом. Однако это правило действует не во всех репозиториях.
Плагин Gradle для Dokka не предоставляет встроенных средств для этого, но задачу можно решить с помощью пользовательских задач Gradle. Одна задача создаёт документацию в формате HTML, а другая — в формате Javadoc:
// To generate documentation in HTML
val dokkaHtmlJar by tasks.registering(Jar::class) {
description = "A HTML Documentation JAR containing Dokka HTML"
from(tasks.dokkaGeneratePublicationHtml.flatMap { it.outputDirectory })
archiveClassifier.set("html-doc")
}
// To generate documentation in Javadoc
val dokkaJavadocJar by tasks.registering(Jar::class) {
description = "A Javadoc JAR containing Dokka Javadoc"
from(tasks.dokkaGeneratePublicationJavadoc.flatMap { it.outputDirectory })
archiveClassifier.set("javadoc")
}
// To generate documentation in HTML
tasks.register('dokkaHtmlJar', Jar) {
description = 'A HTML Documentation JAR containing Dokka HTML'
from(tasks.named('dokkaGeneratePublicationHtml').flatMap { it.outputDirectory })
archiveClassifier.set('html-doc')
}
// To generate documentation in Javadoc
tasks.register('dokkaJavadocJar', Jar) {
description = 'A Javadoc JAR containing Dokka Javadoc'
from(tasks.named('dokkaGeneratePublicationJavadoc').flatMap { it.outputDirectory })
archiveClassifier.set('javadoc')
}
Примеры конфигурации
Способ подключения и настройки Dokka немного различается в зависимости от типа проекта. Однако параметры конфигурации одинаковы для всех типов проектов.
Информацию о простых проектах с плоской структурой, в корне которых находится только один файл build.gradle.kts или build.gradle, см. в разделе Настройка однопроектной сборки.
Информацию о более сложной сборке с подпроектами и несколькими вложенными файлами build.gradle.kts или build.gradle см. в разделе Настройка многопроектной сборки.
Настройка однопроектной сборки
Однопроектные сборки обычно содержат только один файл build.gradle.kts или build.gradle в корне проекта. Они могут быть одноцелевыми или многоплатформенными и обычно имеют следующую структуру:
Одноплатформенный проект:
.
├── build.gradle.kts
└── src/
└── main/
└── kotlin/
└── HelloWorld.kt
Многоплатформенный проект:
.
├── build.gradle.kts
└── src/
├── commonMain/
│ └── kotlin/
│ └── Common.kt
├── jvmMain/
│ └── kotlin/
│ └── JvmUtils.kt
└── nativeMain/
└── kotlin/
└── NativeUtils.kt
Одноплатформенный проект:
.
├── build.gradle
└── src/
└── main/
└── kotlin/
└── HelloWorld.kt
Многоплатформенный проект:
.
├── build.gradle
└── src/
├── commonMain/
│ └── kotlin/
│ └── Common.kt
├── jvmMain/
│ └── kotlin/
│ └── JvmUtils.kt
└── nativeMain/
└── kotlin/
└── NativeUtils.kt
Подключите плагин Dokka Gradle в корневом файле build.gradle.kts и настройте его с помощью DSL верхнего уровня dokka {}:
plugins {
id("org.jetbrains.dokka") version "2.2.0"
}
dokka {
dokkaPublications.html {
moduleName.set("MyProject")
outputDirectory.set(layout.buildDirectory.dir("documentation/html"))
includes.from("README.md")
}
dokkaSourceSets.main {
sourceLink {
localDirectory.set(file("src/main/kotlin"))
remoteUrl.set(URI("https://github.com/your-repo"))
remoteLineSuffix.set("#L")
}
}
}
Внутри ./build.gradle:
plugins {
id 'org.jetbrains.dokka' version '2.2.0'
}
dokka {
dokkaPublications {
html {
moduleName.set("MyProject")
outputDirectory.set(layout.buildDirectory.dir("documentation/html"))
includes.from("README.md")
}
}
dokkaSourceSets {
named("main") {
sourceLink {
localDirectory.set(file("src/main/kotlin"))
remoteUrl.set(new URI("https://github.com/your-repo"))
remoteLineSuffix.set("#L")
}
}
}
}
Эта конфигурация подключает Dokka к проекту, задаёт каталог для выходных данных документации и определяет основной набор исходного кода. Её можно расширить, добавив пользовательские ресурсы, фильтры видимости или конфигурации плагинов в тот же блок dokka {}. Дополнительную информацию см. в разделе Параметры конфигурации.
Настройка многопроектной сборки
Многопроектные сборки обычно содержат несколько вложенных файлов build.gradle.kts и имеют структуру, похожую на следующую:
.
├── build.gradle.kts
├── settings.gradle.kts
├── subproject-A/
│ ├── build.gradle.kts
│ └── src/
│ └── main/
│ └── kotlin/
│ └── HelloFromA.kt
└── subproject-B/
├── build.gradle.kts
└── src/
└── main/
└── kotlin/
└── HelloFromB.kt
.
├── build.gradle
├── settings.gradle
├── subproject-A/
│ ├── build.gradle
│ └── src/
│ └── main/
│ └── kotlin/
│ └── HelloFromA.kt
└── subproject-B/
├── build.gradle
└── src/
└── main/
└── kotlin/
└── HelloFromB.kt
Для документации однопроектных и многопроектных сборок используется одна и та же модель конфигурации на основе DSL верхнего уровня dokka {}.
Существует два способа настроить Dokka в многопроектных сборках:
Общая конфигурация с помощью плагина соглашений (рекомендуется): создание плагина соглашений и его подключение ко всем подпроектам. Это позволяет централизовать настройки Dokka.
Ручная настройка: подключение плагина Dokka и повторение одного и того же блока
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 настройте плагин соглашений Dokka:
Создайте файл
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.
Подключение плагина соглашений к подпроектам
Подключите плагин соглашений Dokka во всех подпроектах, добавив его в файл build.gradle.kts каждого подпроекта:
plugins {
id("dokka-convention")
}
Ручная настройка
Если в проекте не используются плагины соглашений, можно повторно использовать тот же шаблон конфигурации Dokka, вручную скопировав один и тот же блок dokka {} block в каждый подпроект:
-
Подключите плагин Dokka в файле
build.gradle.ktsкаждого подпроекта:plugins { id("org.jetbrains.dokka") version "2.2.0" } Объявите общую конфигурацию в блоке
dokka {}каждого подпроекта. Поскольку конфигурация не централизована с помощью плагина соглашений, необходимо дублировать во всех подпроектах те параметры, которые должны быть общими. Дополнительную информацию см. в разделе параметры конфигурации.
Настройка родительского проекта
В многопроектных сборках можно настроить параметры, применяемые ко всей документации, в корневом проекте. К ним относятся формат вывода, каталог выходных данных, имя подпроекта документации, объединение документации всех подпроектов и другие параметры конфигурации:
plugins {
id("org.jetbrains.dokka") version "2.2.0"
}
dokka {
// Sets properties for the whole project
dokkaPublications.html {
moduleName.set("My Project")
outputDirectory.set(layout.buildDirectory.dir("docs/html"))
includes.from("README.md")
}
dokkaSourceSets.configureEach {
documentedVisibilities.set(setOf(VisibilityModifier.Public)) // OR documentedVisibilities(VisibilityModifier.Public)
}
}
// Aggregates subproject documentation
dependencies {
dokka(project(":childProjectA"))
dokka(project(":childProjectB"))
}
Кроме того, в каждом подпроекте может быть собственный блок dokka {} для настройки индивидуальных параметров. В следующем примере подпроект подключает плагин Dokka, задаёт собственное имя и добавляет дополнительную документацию из файла README.md:
// subproject/build.gradle.kts
plugins {
id("org.jetbrains.dokka")
}
dokka {
dokkaPublications.html {
moduleName.set("Child Project A")
includes.from("README.md")
}
}
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/dokka-gradle.html