Using the Maven plugin¶
Note
Dokka Maven plugin does not support multi-platform projects.
The Maven plugin does not support multi-platform projects.
Minimal Maven configuration is
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>dokka-maven-plugin</artifactId>
<version>${dokka.version}</version>
<executions>
<execution>
<phase>pre-site</phase>
<goals>
<goal>dokka</goal>
</goals>
</execution>
</executions>
</plugin>
By default files will be generated in target/dokka
.
The following goals are provided by the plugin:
dokka:dokka
- generate HTML documentation in Dokka format (showing declarations in Kotlin syntax)dokka:javadoc
- generate HTML documentation in Javadoc format (showing declarations in Java syntax)dokka:javadocJar
- generate a .jar file with Javadoc format documentation
Configuration options¶
The available configuration options are shown below:
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>dokka-maven-plugin</artifactId>
<version>${dokka.version}</version>
<executions>
<execution>
<phase>pre-site</phase>
<goals>
<goal>dokka</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- Set to true to skip dokka task, default: false -->
<skip>false</skip>
<!-- Default: ${project.artifactId} -->
<moduleName>data</moduleName>
<!-- Default: ${project.basedir}/target/dokka -->
<outputDir>some/out/dir</outputDir>
<!-- Use default or set to custom path to cache directory to enable package-list caching. -->
<!-- When set to default, caches stored in $USER_HOME/.cache/dokka -->
<cacheRoot>default</cacheRoot>
<!-- Set to true to to prevent resolving package-lists online. -->
<!-- When this option is set to true, only local files are resolved, default: false -->
<offlineMode>false</offlineMode>
<!-- List of '.md' files with package and module docs -->
<!-- https://kotlinlang.org/docs/reference/kotlin-doc.html#module-and-package-documentation -->
<includes>
<include>packages.md</include>
<include>extra.md</include>
</includes>
<!-- A list of visibility modifiers that should be documented -->
<!-- If set by user, overrides includeNonPublic. Default is PUBLIC -->
<documentedVisibilities>
<visibility>PUBLIC</visibility> <!-- Same for both kotlin and java -->
<visibility>PRIVATE</visibility> <!-- Same for both kotlin and java -->
<visibility>PROTECTED</visibility> <!-- Same for both kotlin and java -->
<visibility>INTERNAL</visibility> <!-- Kotlin-specific internal modifier -->
<visibility>PACKAGE</visibility> <!-- Java-specific package-private visibility (default) -->
</documentedVisibilities>
<!-- List of sample roots -->
<samples>
<dir>src/test/samples</dir>
</samples>
<!-- Suppress obvious functions like default toString or equals. Defaults to true -->
<suppressObviousFunctions>false</suppressObviousFunctions>
<!-- Suppress all inherited members that were not overriden in a given class. -->
<!-- Eg. using it you can suppress toString or equals functions but you can't suppress componentN or copy on data class. To do that use with suppressObviousFunctions -->
<!-- Defaults to false -->
<suppressInheritedMembers>true</suppressInheritedMembers>
<!-- Used for linking to JDK, default: 6 -->
<jdkVersion>6</jdkVersion>
<!-- Do not output deprecated members, applies globally, can be overridden by packageOptions -->
<skipDeprecated>false</skipDeprecated>
<!-- Emit warnings about not documented members, applies globally, also can be overridden by packageOptions -->
<reportUndocumented>true</reportUndocumented>
<!-- Do not create index pages for empty packages -->
<skipEmptyPackages>true</skipEmptyPackages>
<!-- Short form list of sourceRoots, by default, set to ${project.compileSourceRoots} -->
<sourceDirectories>
<dir>src/main/kotlin</dir>
</sourceDirectories>
<!-- Full form list of sourceRoots -->
<sourceRoots>
<root>
<path>src/main/kotlin</path>
<!-- See platforms section of documentation -->
<platforms>JVM</platforms>
</root>
</sourceRoots>
<!-- Specifies the location of the project source code on the Web. If provided, Dokka generates "source" links
for each declaration. -->
<sourceLinks>
<link>
<!-- Source directory -->
<path>${project.basedir}/src/main/kotlin</path>
<!-- URL showing where the source code can be accessed through the web browser -->
<url>https://github.com/cy6erGn0m/vertx3-lang-kotlin/blob/master/src/main/kotlin</url> <!-- //remove src/main/kotlin if you use "./" above -->
<!--Suffix which is used to append the line number to the URL. Use #L for GitHub -->
<lineSuffix>#L</lineSuffix>
</link>
</sourceLinks>
<!-- Disable linking to online kotlin-stdlib documentation -->
<noStdlibLink>false</noStdlibLink>
<!-- Disable linking to online JDK documentation -->
<noJdkLink>false</noJdkLink>
<!-- Allows linking to documentation of the project's dependencies (generated with Javadoc or Dokka) -->
<externalDocumentationLinks>
<link>
<!-- Root URL of the generated documentation to link with. The trailing slash is required! -->
<url>https://example.com/docs/</url>
<!-- If package-list file located in non-standard location -->
<!-- <packageListUrl>file:///home/user/localdocs/package-list</packageListUrl> -->
</link>
</externalDocumentationLinks>
<!-- Allows to customize documentation generation options on a per-package basis -->
<perPackageOptions>
<packageOptions>
<!-- Will match kotlin and all sub-packages of it -->
<matchingRegex>kotlin($|\.).*</matchingRegex>
<!-- All options are optional, default values are below: -->
<skipDeprecated>false</skipDeprecated>
<!-- Emit warnings about not documented members -->
<reportUndocumented>true</reportUndocumented>
<!-- Deprecated. Prefer using documentedVisibilities -->
<includeNonPublic>false</includeNonPublic>
<!-- A list of visibility modifiers that should be documented -->
<!-- If set by user, overrides includeNonPublic. Default is PUBLIC -->
<documentedVisibilities>
<visibility>PUBLIC</visibility> <!-- Same for both kotlin and java -->
<visibility>PRIVATE</visibility> <!-- Same for both kotlin and java -->
<visibility>PROTECTED</visibility> <!-- Same for both kotlin and java -->
<visibility>INTERNAL</visibility> <!-- Kotlin-specific internal modifier -->
<visibility>PACKAGE</visibility> <!-- Java-specific package-private visibility (default) -->
</documentedVisibilities>
</packageOptions>
</perPackageOptions>
<!-- Allows to use any dokka plugin, eg. GFM format -->
<dokkaPlugins>
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>gfm-plugin</artifactId>
<version>${dokka.version}</version>
</plugin>
</dokkaPlugins>
<!-- Configures a plugin separately -->
<pluginsConfiguration>
<fullyQualifiedPluginName>
<!-- Configuration -->
</fullyQualifiedPluginName>
</pluginsConfiguration>
</configuration>
</plugin>
Applying plugins¶
You can add plugins inside the dokkaPlugins
block:
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>dokka-maven-plugin</artifactId>
<version>${dokka.version}</version>
<executions>
<execution>
<phase>pre-site</phase>
<goals>
<goal>dokka</goal>
</goals>
</execution>
</executions>
<configuration>
<dokkaPlugins>
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>kotlin-as-java-plugin</artifactId>
<version>${dokka.version}</version>
</plugin>
</dokkaPlugins>
</configuration>
</plugin>
Some plugins can be configured separately using plugin's fully qualified name. For example:
<pluginsConfiguration>
<org.jetbrains.dokka.base.DokkaBase>
<customStyleSheets>
<customStyleSheet><!-- path to custom stylesheet --></customStyleSheet>
</customStyleSheets>
<customAssets>
<customAsset><!-- path to custom asset --></customAsset>
</customAssets>
</org.jetbrains.dokka.base.DokkaBase>
</pluginsConfiguration>
Example project¶
Please see the Dokka Maven example project for an example.