Introduction¶
Plugins¶
Dokka can be customized with plugins. Each output format is internally a plugin.
Additionally, kotlin-as-java
plugin can be used to generate documentation as seen from Java perspective.
Currently maintained plugins are:
dokka-base
- the main plugin needed to run Dokka, contains html formatgfm-plugin
- configuresGFM
output formatjekyll-plugin
- configuresJekyll
output formatjavadoc-plugin
- configuresJavadoc
output format, automatically applieskotlin-as-java-plugin
kotlin-as-java-plugin
- translates Kotlin definitions to Javaandroid-documentation-plugin
- provides android specific enhancements like@hide
support
Please see the usage instructions for each build system on how to add plugins to Dokka.
Source sets¶
Dokka generates documentation based on source sets.
For single-platform & multi-platform projects, source sets are the same as in Kotlin plugin:
- One source set for each platform, eg.
jvmMain
orjsMain
; - One source set for each common source set, eg. the default
commonMain
and custom ones likejsAndJvmMain
.
When configuring multi-platform projects manually (eg. in the CLI or in Gradle without the Kotlin Gradle Plugin) source sets must declare their dependent source sets. Eg. in the following Kotlin plugin configuration:
jsMain
andjvmMain
both depend oncommonMain
(by default and transitively) andjsAndJvmMain
;linuxX64Main
only depends oncommonMain
.
kotlin { // Kotlin plugin configuration
jvm()
js()
linuxX64()
sourceSets {
val commonMain by getting {}
val jvmAndJsSecondCommonMain by creating { dependsOn(commonMain) }
val jvmMain by getting { dependsOn(jvmAndJsSecondCommonMain) }
val jsMain by getting { dependsOn(jvmAndJsSecondCommonMain) }
val linuxX64Main by getting { dependsOn(commonMain) }
}
}
Output formats¶
Dokka documents Java classes as seen in Kotlin by default, with javadoc format being the only exception.
html
- HTML format used by defaultjavadoc
- looks like JDK's Javadoc, Kotlin classes are translated to Javagfm
- GitHub flavored markdownjekyll
- Jekyll compatible markdown
If you want to generate the documentation as seen from Java perspective, you can add the kotlin-as-java
plugin
to the Dokka plugins classpath, eg. in Gradle:
dependencies{
implementation("...")
dokkaGfmPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:${dokka-version}")
}
Platforms¶
Each Dokka source set is analyzed for a specific platform. The platform should be extracted automatically from the Kotlin plugin. In case of a manual source set configuration, you have to select one of the following:
jvm
js
native
common