aboutsummaryrefslogtreecommitdiff
path: root/docs/topics/runners/dokka-maven.md
diff options
context:
space:
mode:
authorIgnat Beresnev <ignat.beresnev@jetbrains.com>2023-01-10 13:14:43 +0100
committerGitHub <noreply@github.com>2023-01-10 13:14:43 +0100
commit7544a215fb580ae0c47d1f397334f150d1a1ec65 (patch)
treea30aa62c827e3ba88a498a7406ac57fa7334b270 /docs/topics/runners/dokka-maven.md
parent2161c397e1b1aadcf3d39c8518258e9bdb2b431a (diff)
downloaddokka-7544a215fb580ae0c47d1f397334f150d1a1ec65.tar.gz
dokka-7544a215fb580ae0c47d1f397334f150d1a1ec65.tar.bz2
dokka-7544a215fb580ae0c47d1f397334f150d1a1ec65.zip
Revise documentation (#2728)
Co-authored-by: Sarah Haggarty <sarahhaggarty@users.noreply.github.com>
Diffstat (limited to 'docs/topics/runners/dokka-maven.md')
-rw-r--r--docs/topics/runners/dokka-maven.md646
1 files changed, 646 insertions, 0 deletions
diff --git a/docs/topics/runners/dokka-maven.md b/docs/topics/runners/dokka-maven.md
new file mode 100644
index 00000000..9bedc517
--- /dev/null
+++ b/docs/topics/runners/dokka-maven.md
@@ -0,0 +1,646 @@
+[//]: # (title: Maven)
+
+To generate documentation for a Maven-based project, you can use the Maven plugin for Dokka.
+
+> Compared to the [Gradle plugin for Dokka](dokka-gradle.md), the Maven plugin has only basic features and
+> does not provide support for multi-module builds.
+>
+{type="note"}
+
+You can play around with Dokka and see how it can be configured for a Maven project by visiting
+our [Maven example](https://github.com/Kotlin/dokka/tree/%dokkaVersion%/examples/maven) project.
+
+## Apply Dokka
+
+To apply Dokka, you need to add `dokka-maven-plugin` to the `plugins` section of your POM file:
+
+```xml
+<build>
+ <plugins>
+ <plugin>
+ <groupId>org.jetbrains.dokka</groupId>
+ <artifactId>dokka-maven-plugin</artifactId>
+ <version>%dokkaVersion%</version>
+ <executions>
+ <execution>
+ <phase>pre-site</phase>
+ <goals>
+ <goal>dokka</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+</build>
+```
+
+## Generate documentation
+
+The following goals are provided by the Maven plugin:
+
+### Stable
+
+| **Goal** | **Description** |
+|---------------|----------------------------------------------------------------------------------------|
+| `dokka:dokka` | Generates documentation with Dokka plugins applied. [HTML](dokka-html.md) format by default. |
+
+### Experimental
+
+| **Goal** | **Description** |
+|--------------------|---------------------------------------------------------------------------------------------|
+| `dokka:javadoc` | Generates documentation in [Javadoc](dokka-javadoc.md) format. |
+| `dokka:javadocJar` | Generates a `javadoc.jar` file that contains documentation in [Javadoc](dokka-javadoc.md) format. |
+
+### Other output formats
+
+By default, the Maven plugin for Dokka builds documentation in [HTML](dokka-html.md) output format.
+
+All other output formats are implemented as [Dokka plugins](dokka-plugins.md). In order to generate documentation in the
+desired format, you have to add it as a Dokka plugin to the configuration.
+
+For example, to use the experimental [GFM](dokka-markdown.md#gfm) format, you have to add `gfm-plugin` artifact:
+
+```xml
+<plugin>
+ <groupId>org.jetbrains.dokka</groupId>
+ <artifactId>dokka-maven-plugin</artifactId>
+ ...
+ <configuration>
+ <dokkaPlugins>
+ <plugin>
+ <groupId>org.jetbrains.dokka</groupId>
+ <artifactId>gfm-plugin</artifactId>
+ <version>%dokkaVersion%</version>
+ </plugin>
+ </dokkaPlugins>
+ </configuration>
+</plugin>
+```
+
+With this configuration, running the `dokka:dokka` goal produces documentation in GFM format.
+
+To learn more about Dokka plugins, see [Dokka plugins](dokka-plugins.md).
+
+## Build javadoc.jar
+
+If you want to publish your library to a repository, you may need to provide a `javadoc.jar` file that contains
+API reference documentation of your library.
+
+For example, if you want to publish to [Maven Central](https://central.sonatype.org/), you
+[must](https://central.sonatype.org/publish/requirements/) supply a `javadoc.jar` alongside your project. However,
+not all repositories have that rule.
+
+Unlike the [Gradle plugin for Dokka](dokka-gradle.md#build-javadoc-jar), the Maven plugin comes with a ready-to-use `dokka:javadocJar`
+goal. By default, it generates documentation in [Javadoc](dokka-javadoc.md) output format in the`target` folder.
+
+If you are not satisfied with the built-in goal or want to customize the output (for example, you want to generate
+documentation in [HTML](dokka-html.md) format instead of Javadoc), similar behavior can be achieved by adding the
+Maven JAR plugin with the following configuration:
+
+```xml
+<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>3.3.0</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>dokka-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ <configuration>
+ <classifier>dokka</classifier>
+ <classesDirectory>${project.build.directory}/dokka</classesDirectory>
+ <skipIfEmpty>true</skipIfEmpty>
+ </configuration>
+ </execution>
+ </executions>
+</plugin>
+```
+
+The documentation and the `.jar` archive for it are then generated by running `dokka:dokka` and `jar:jar@dokka-jar` goals:
+
+```Bash
+mvn dokka:dokka jar:jar@dokka-jar
+```
+
+> If you publish your library to Maven Central, you can use services like [javadoc.io](https://javadoc.io/) to
+> host your library's API documentation for free and without any setup. It takes documentation pages straight
+> from the `javadoc.jar`. It works well with the HTML format as demonstrated in
+> [this example](https://javadoc.io/doc/com.trib3/server/latest/index.html).
+>
+{type="tip"}
+
+## Configuration example
+
+Maven's plugin configuration block can be used to configure Dokka.
+
+Here is an example of a basic configuration that only changes the output location of your documentation:
+
+```xml
+<plugin>
+ <groupId>org.jetbrains.dokka</groupId>
+ <artifactId>dokka-maven-plugin</artifactId>
+ ...
+ <configuration>
+ <outputDir>${project.basedir}/target/documentation/dokka</outputDir>
+ </configuration>
+</plugin>
+```
+
+## Configuration options
+
+Dokka has many configuration options to tailor your and your reader's experience.
+
+Below are some examples and detailed descriptions for each configuration section. You can also find an example
+with [all configuration options](#complete-configuration) applied at the bottom of the page.
+
+### General configuration
+
+```xml
+<plugin>
+ <groupId>org.jetbrains.dokka</groupId>
+ <artifactId>dokka-maven-plugin</artifactId>
+ <!-- ... -->
+ <configuration>
+ <skip>false</skip>
+ <moduleName>${project.artifactId}</moduleName>
+ <outputDir>${project.basedir}/target/documentation</outputDir>
+ <failOnWarning>false</failOnWarning>
+ <suppressObviousFunctions>true</suppressObviousFunctions>
+ <suppressInheritedMembers>false</suppressInheritedMembers>
+ <offlineMode>false</offlineMode>
+ <sourceDirectories>
+ <dir>${project.basedir}/src</dir>
+ </sourceDirectories>
+ <documentedVisibilities>
+ <visibility>PUBLIC</visibility>
+ <visibility>PROTECTED</visibility>
+ </documentedVisibilities>
+ <reportUndocumented>false</reportUndocumented>
+ <skipDeprecated>false</skipDeprecated>
+ <skipEmptyPackages>true</skipEmptyPackages>
+ <suppressedFiles>
+ <file>/path/to/dir</file>
+ <file>/path/to/file</file>
+ </suppressedFiles>
+ <jdkVersion>8</jdkVersion>
+ <languageVersion>1.7</languageVersion>
+ <apiVersion>1.7</apiVersion>
+ <noStdlibLink>false</noStdlibLink>
+ <noJdkLink>false</noJdkLink>
+ <includes>
+ <include>packages.md</include>
+ <include>extra.md</include>
+ </includes>
+ <classpath>${project.compileClasspathElements}</classpath>
+ <samples>
+ <dir>${project.basedir}/samples</dir>
+ </samples>
+ <sourceLinks>
+ <!-- Separate section -->
+ </sourceLinks>
+ <externalDocumentationLinks>
+ <!-- Separate section -->
+ </externalDocumentationLinks>
+ <perPackageOptions>
+ <!-- Separate section -->
+ </perPackageOptions>
+ </configuration>
+</plugin>
+```
+
+<deflist collapsible="true">
+ <def title="skip">
+ <p>Whether to skip documentation generation.</p>
+ <p>Default: <code>false</code></p>
+ </def>
+ <def title="moduleName">
+ <p>The display name used to refer to the project/module. It's used for the table of contents, navigation, logging, etc.</p>
+ <p>Default: <code>{project.artifactId}</code></p>
+ </def>
+ <def title="outputDir">
+ <p>The directory to where documentation is generated, regardless of format.</p>
+ <p>Default: <code>{project.basedir}/target/dokka</code></p>
+ </def>
+ <def title="failOnWarning">
+ <p>
+ Whether to fail documentation generation if Dokka has emitted a warning or an error. The process waits until
+ all errors and warnings have been emitted first.
+ </p>
+ <p>This setting works well with <code>reportUndocumented</code>.</p>
+ <p>Default: <code>false</code></p>
+ </def>
+ <def title="suppressObviousFunctions">
+ <p>Whether to suppress obvious functions.</p>
+ <p>
+ A function is considered to be obvious if it is:
+ <list>
+ <li>
+ Inherited from <code>kotlin.Any</code>, <code>Kotlin.Enum</code>, <code>java.lang.Object</code> or
+ <code>java.lang.Enum</code>, such as <code>equals</code>, <code>hashCode</code>, <code>toString</code>.
+ </li>
+ <li>
+ Synthetic (generated by the compiler) and does not have any documentation, such as
+ <code>dataClass.componentN</code> or <code>dataClass.copy</code>.
+ </li>
+ </list>
+ </p>
+ <p>Default: <code>true</code></p>
+ </def>
+ <def title="suppressInheritedMembers">
+ <p>Whether to suppress inherited members that aren't explicitly overridden in a given class.</p>
+ <p>
+ Note: This can suppress functions such as <code>equals</code>/<code>hashCode</code>/<code>toString</code>,
+ but cannot suppress synthetic functions such as <code>dataClass.componentN</code> and
+ <code>dataClass.copy</code>. Use <code>suppressObviousFunctions</code> for that.
+ </p>
+ <p>Default: <code>false</code></p>
+ </def>
+ <def title="offlineMode">
+ <p>Whether to resolve remote files/links over your network.</p>
+ <p>
+ This includes package-lists used for generating external documentation links.
+ For example, to make classes from the standard library clickable.
+ </p>
+ <p>
+ Setting this to <code>true</code> can significantly speed up build times in certain cases,
+ but can also worsen documentation quality and user experience. For example, by
+ not resolving class/member links from your dependencies, including the standard library.
+ </p>
+ <p>
+ Note: You can cache fetched files locally and provide them to
+ Dokka as local paths. See <code>externalDocumentationLinks</code> section.
+ </p>
+ <p>Default: <code>false</code></p>
+ </def>
+ <def title="sourceDirectories">
+ <p>
+ The source code roots to be analyzed and documented.
+ Acceptable inputs are directories and individual <code>.kt</code> / <code>.java</code> files.
+ </p>
+ <p>Default: <code>{project.compileSourceRoots}</code></p>
+ </def>
+ <def title="documentedVisibilities">
+ <p>The set of visibility modifiers that should be documented.</p>
+ <p>
+ This can be used if you want to document protected/internal/private declarations,
+ as well as if you want to exclude public declarations and only document internal API.
+ </p>
+ <p>Can be configured on per-package basis.</p>
+ <p>Default: <code>PUBLIC</code></p>
+ </def>
+ <def title="reportUndocumented">
+ <p>
+ Whether to emit warnings about visible undocumented declarations, that is declarations without KDocs
+ after they have been filtered by <code>documentedVisibilities</code> and other filters.
+ </p>
+ <p>This setting works well with <code>failOnWarning</code>.</p>
+ <p>This can be overridden at package level.</p>
+ <p>Default: <code>false</code></p>
+ </def>
+ <def title="skipDeprecated">
+ <p>Whether to document declarations annotated with <code>@Deprecated</code>.</p>
+ <p>This can be overridden at package level.</p>
+ <p>Default: <code>false</code></p>
+ </def>
+ <def title="skipEmptyPackages">
+ <p>
+ Whether to skip packages that contain no visible declarations after
+ various filters have been applied.
+ </p>
+ <p>
+ For example, if <code>skipDeprecated</code> is set to <code>true</code> and your package contains only
+ deprecated declarations, it is considered to be empty.
+ </p>
+ <p>Default: <code>true</code></p>
+ </def>
+ <def title="suppressedFiles">
+ <p>
+ The directories or individual files that should be suppressed, meaning that declarations from them
+ are not documented.
+ </p>
+ </def>
+ <def title="jdkVersion">
+ <p>The JDK version to use when generating external documentation links for Java types.</p>
+ <p>
+ For example, if you use <code>java.util.UUID</code> in some public declaration signature,
+ and this option is set to <code>8</code>, Dokka generates an external documentation link
+ to <a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html">JDK 8 Javadocs</a> for it.
+ </p>
+ <p>Default: JDK 8</p>
+ </def>
+ <def title="languageVersion">
+ <p>
+ <a href="https://kotlinlang.org/docs/compatibility-modes.html">The Kotlin language version</a>
+ used for setting up analysis and <a href="https://kotlinlang.org/docs/kotlin-doc.html#sample-identifier">@sample</a>
+ environment.
+ </p>
+ <p>By default, the latest language version available to Dokka's embedded compiler is used.</p>
+ </def>
+ <def title="apiVersion">
+ <p>
+ <a href="https://kotlinlang.org/docs/compatibility-modes.html">The Kotlin API version</a>
+ used for setting up analysis and <a href="https://kotlinlang.org/docs/kotlin-doc.html#sample-identifier">@sample</a>
+ environment.
+ </p>
+ <p>By default, it is deduced from <code>languageVersion</code>.</p>
+ </def>
+ <def title="noStdlibLink">
+ <p>
+ Whether to generate external documentation links that lead to the API reference
+ documentation of Kotlin's standard library.
+ </p>
+ <p>Note: Links <b>are</b> generated when <code>noStdLibLink</code> is set to <code>false</code>.</p>
+ <p>Default: <code>false</code></p>
+ </def>
+ <def title="noJdkLink">
+ <p>Whether to generate external documentation links to JDK's Javadocs.</p>
+ <p>The version of JDK Javadocs is determined by the <code>jdkVersion</code> option.</p>
+ <p>Note: Links <b>are</b> generated when <code>noJdkLink</code> is set to <code>false</code>.</p>
+ <p>Default: <code>false</code></p>
+ </def>
+ <def title="includes">
+ <p>
+ A list of Markdown files that contain
+ <a href="https://kotlinlang.org/docs/reference/kotlin-doc.html#module-and-package-documentation">module and package documentation</a>
+ </p>
+ <p>The contents of specified files are parsed and embedded into documentation as module and package descriptions.</p>
+ </def>
+ <def title="classpath">
+ <p>The classpath for analysis and interactive samples.</p>
+ <p>
+ This is useful if some types that come from dependencies are not resolved/picked up automatically.
+ This option accepts both <code>.jar</code> and <code>.klib</code> files.
+ </p>
+ <p>Default: <code>{project.compileClasspathElements}</code></p>
+ </def>
+ <def title="samples">
+ <p>
+ A list of directories or files that contain sample functions which are referenced via
+ <a href="https://kotlinlang.org/docs/kotlin-doc.html#sample-identifier">@sample KDoc tag.</a>
+ </p>
+ </def>
+</deflist>
+
+### Source link configuration
+
+The `sourceLinks` configuration block allows you to add a `source` link to each signature
+that leads to the `url` with a specific line number. (The line number is configurable by setting `lineSuffix`).
+
+This helps readers to find the source code for each declaration.
+
+For an example, see the documentation for the
+[`count()`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/count.html)
+function in `kotlinx.coroutines`.
+
+```xml
+<plugin>
+ <groupId>org.jetbrains.dokka</groupId>
+ <artifactId>dokka-maven-plugin</artifactId>
+ <!-- ... -->
+ <configuration>
+ <sourceLinks>
+ <link>
+ <path>${project.basedir}/src</path>
+ <url>https://github.com/kotlin/dokka/tree/master/src</url>
+ <lineSuffix>#L</lineSuffix>
+ </link>
+ </sourceLinks>
+ </configuration>
+</plugin>
+```
+
+<deflist collapsible="true">
+ <def title="path">
+ <p>
+ The path to the local source directory. The path must be relative to the root of the
+ current module.
+ </p>
+ </def>
+ <def title="url">
+ <p>
+ The URL of the source code hosting service that can be accessed by documentation readers,
+ like GitHub, GitLab, Bitbucket, etc. This URL is used to generate
+ source code links of declarations.
+ </p>
+ </def>
+ <def title="lineSuffix">
+ <p>
+ The suffix used to append source code line number to the URL. This helps readers navigate not only
+ to the file, but to the specific line number of the declaration.
+ </p>
+ <p>
+ The number itself is appended to the specified suffix. For example, if this option is set
+ to <code>#L</code> and the line number is 10, the resulting URL suffix is <code>#L10</code>.
+ </p>
+ <p>
+ Suffixes used by popular services:
+ <list>
+ <li>GitHub: <code>#L</code></li>
+ <li>GitLab: <code>#L</code></li>
+ <li>Bitbucket: <code>#lines-</code></li>
+ </list>
+ </p>
+ </def>
+</deflist>
+
+#### External documentation links configuration
+
+The `externalDocumentationLink` block allows the creation of links that lead to the externally hosted documentation of
+your dependencies.
+
+For example, if you are using types from `kotlinx.serialization`, by default they are unclickable in your
+documentation, as if they are unresolved. However, since the API reference documentation for `kotlinx.serialization`
+is built by Dokka and is [published on kotlinlang.org](https://kotlinlang.org/api/kotlinx.serialization/), you can
+configure external documentation links for it. Thus allowing Dokka to generate links for types from the library, making
+them resolve successfully and clickable.
+
+By default, external documentation links for Kotlin standard library and JDK are configured.
+
+```xml
+<plugin>
+ <groupId>org.jetbrains.dokka</groupId>
+ <artifactId>dokka-maven-plugin</artifactId>
+ <!-- ... -->
+ <configuration>
+ <externalDocumentationLinks>
+ <link>
+ <url>https://kotlinlang.org/api/kotlinx.serialization/</url>
+ <packageListUrl>file:/${project.basedir}/serialization.package.list</packageListUrl>
+ </link>
+ </externalDocumentationLinks>
+ </configuration>
+</plugin>
+```
+
+<deflist collapsible="true">
+ <def title="url">
+ <p>The root URL of documentation to link to. It <b>must</b> contain a trailing slash.</p>
+ <p>
+ Dokka does its best to automatically find the <code>package-list</code> for the given URL,
+ and link declarations together.
+ </p>
+ <p>
+ If automatic resolution fails or if you want to use locally cached files instead,
+ consider setting the <code>packageListUrl</code> option.
+ </p>
+ </def>
+ <def title="packageListUrl">
+ <p>
+ The exact location of a <code>package-list</code>. This is an alternative to relying on Dokka
+ automatically resolving it.
+ </p>
+ <p>
+ Package lists contain information about the documentation and the project itself,
+ such as module and package names.
+ </p>
+ <p>This can also be a locally cached file to avoid network calls.</p>
+ </def>
+</deflist>
+
+### Package options
+
+The `perPackageOptions` configuration block allows setting some options for specific packages matched by `matchingRegex`.
+
+```xml
+<plugin>
+ <groupId>org.jetbrains.dokka</groupId>
+ <artifactId>dokka-maven-plugin</artifactId>
+ <!-- ... -->
+ <configuration>
+ <perPackageOptions>
+ <packageOptions>
+ <matchingRegex>.*api.*</matchingRegex>
+ <suppress>false</suppress>
+ <reportUndocumented>false</reportUndocumented>
+ <skipDeprecated>false</skipDeprecated>
+ <documentedVisibilities>
+ <visibility>PUBLIC</visibility>
+ <visibility>PRIVATE</visibility>
+ <visibility>PROTECTED</visibility>
+ <visibility>INTERNAL</visibility>
+ <visibility>PACKAGE</visibility>
+ </documentedVisibilities>
+ </packageOptions>
+ </perPackageOptions>
+ </configuration>
+</plugin>
+```
+
+<deflist collapsible="true">
+ <def title="matchingRegex">
+ <p>The regular expression that is used to match the package.</p>
+ <p>Default: <code>.*</code></p>
+ </def>
+ <def title="suppress">
+ <p>Whether this package should be skipped when generating documentation.</p>
+ <p>Default: <code>false</code></p>
+ </def>
+ <def title="documentedVisibilities">
+ <p>The set of visibility modifiers that should be documented.</p>
+ <p>
+ This can be used if you want to document protected/internal/private declarations within this package,
+ as well as if you want to exclude public declarations and only document internal API.
+ </p>
+ <p>Default: <code>PUBLIC</code></p>
+ </def>
+ <def title="skipDeprecated">
+ <p>Whether to document declarations annotated with <code>@Deprecated</code>.</p>
+ <p>This can be set on project/module level.</p>
+ <p>Default: <code>false</code></p>
+ </def>
+ <def title="reportUndocumented">
+ <p>
+ Whether to emit warnings about visible undocumented declarations, that is declarations without KDocs
+ after they have been filtered by <code>documentedVisibilities</code> and other filters.
+ </p>
+ <p>This setting works well with <code>failOnWarning</code>.</p>
+ <p>Default: <code>false</code></p>
+ </def>
+</deflist>
+
+### Complete configuration
+
+Below you can see all the possible configuration options applied at the same time.
+
+```xml
+<plugin>
+ <groupId>org.jetbrains.dokka</groupId>
+ <artifactId>dokka-maven-plugin</artifactId>
+ <!-- ... -->
+ <configuration>
+ <skip>false</skip>
+ <moduleName>${project.artifactId}</moduleName>
+ <outputDir>${project.basedir}/target/documentation</outputDir>
+ <failOnWarning>false</failOnWarning>
+ <suppressObviousFunctions>true</suppressObviousFunctions>
+ <suppressInheritedMembers>false</suppressInheritedMembers>
+ <offlineMode>false</offlineMode>
+ <sourceDirectories>
+ <dir>${project.basedir}/src</dir>
+ </sourceDirectories>
+ <documentedVisibilities>
+ <visibility>PUBLIC</visibility>
+ <visibility>PRIVATE</visibility>
+ <visibility>PROTECTED</visibility>
+ <visibility>INTERNAL</visibility>
+ <visibility>PACKAGE</visibility>
+ </documentedVisibilities>
+ <reportUndocumented>false</reportUndocumented>
+ <skipDeprecated>false</skipDeprecated>
+ <skipEmptyPackages>true</skipEmptyPackages>
+ <suppressedFiles>
+ <file>/path/to/dir</file>
+ <file>/path/to/file</file>
+ </suppressedFiles>
+ <jdkVersion>8</jdkVersion>
+ <languageVersion>1.7</languageVersion>
+ <apiVersion>1.7</apiVersion>
+ <noStdlibLink>false</noStdlibLink>
+ <noJdkLink>false</noJdkLink>
+ <includes>
+ <include>packages.md</include>
+ <include>extra.md</include>
+ </includes>
+ <classpath>${project.compileClasspathElements}</classpath>
+ <samples>
+ <dir>${project.basedir}/samples</dir>
+ </samples>
+ <sourceLinks>
+ <link>
+ <path>${project.basedir}/src</path>
+ <url>https://github.com/kotlin/dokka/tree/master/src</url>
+ <lineSuffix>#L</lineSuffix>
+ </link>
+ </sourceLinks>
+ <externalDocumentationLinks>
+ <link>
+ <url>https://kotlinlang.org/api/latest/jvm/stdlib/</url>
+ <packageListUrl>file:/${project.basedir}/stdlib.package.list</packageListUrl>
+ </link>
+ </externalDocumentationLinks>
+ <perPackageOptions>
+ <packageOptions>
+ <matchingRegex>.*api.*</matchingRegex>
+ <suppress>false</suppress>
+ <reportUndocumented>false</reportUndocumented>
+ <skipDeprecated>false</skipDeprecated>
+ <documentedVisibilities>
+ <visibility>PUBLIC</visibility>
+ <visibility>PRIVATE</visibility>
+ <visibility>PROTECTED</visibility>
+ <visibility>INTERNAL</visibility>
+ <visibility>PACKAGE</visibility>
+ </documentedVisibilities>
+ </packageOptions>
+ </perPackageOptions>
+ </configuration>
+</plugin>
+```