aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md480
1 files changed, 308 insertions, 172 deletions
diff --git a/README.md b/README.md
index e60e32d1..43e5ac9d 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,11 @@
-dokka [![official JetBrains project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
-[![TeamCity (build status)](https://img.shields.io/teamcity/http/teamcity.jetbrains.com/s/Kotlin_Dokka_DokkaAntMavenGradle.svg)](https://teamcity.jetbrains.com/viewType.html?buildTypeId=Kotlin_Dokka_DokkaAntMavenGradle&branch_KotlinTools_Dokka=%3Cdefault%3E&tab=buildTypeStatusDiv) [ ![Download](https://api.bintray.com/packages/kotlin/dokka/dokka/images/download.svg) ](https://bintray.com/kotlin/dokka/dokka/_latestVersion)
-=====
+# dokka [![official JetBrains project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub) [![TeamCity (build status)](https://teamcity.jetbrains.com/app/rest/builds/buildType:(id:Kotlin_Dokka_DokkaAntMavenGradle)/statusIcon)](https://teamcity.jetbrains.com/viewType.html?buildTypeId=Kotlin_Dokka_DokkaAntMavenGradle&branch_KotlinTools_Dokka=%3Cdefault%3E&tab=buildTypeStatusDiv) [![Download](https://api.bintray.com/packages/kotlin/dokka/dokka/images/download.svg)](https://bintray.com/kotlin/dokka/dokka/_latestVersion)
Dokka is a documentation engine for Kotlin, performing the same function as javadoc for Java.
Just like Kotlin itself, Dokka fully supports mixed-language Java/Kotlin projects. It understands
standard Javadoc comments in Java files and [KDoc comments](https://kotlinlang.org/docs/reference/kotlin-doc.html) in Kotlin files,
and can generate documentation in multiple formats including standard Javadoc, HTML and Markdown.
-## Using Dokka
+## Using dokka
### Using the Gradle plugin
@@ -27,136 +25,264 @@ repositories {
apply plugin: 'org.jetbrains.dokka'
```
-or using the new plugins block:
+or using the plugins block:
```groovy
plugins {
- id 'org.jetbrains.dokka' version '0.9.18'
+ id 'org.jetbrains.dokka' version '0.10.0'
}
repositories {
jcenter() // or maven { url 'https://dl.bintray.com/kotlin/dokka' }
}
```
-The plugin adds a task named "dokka" to the project.
+The plugin adds a task named `dokka` to the project.
If you encounter any problems when migrating from older versions of Dokka, please see the [FAQ](https://github.com/Kotlin/dokka/wiki/faq).
Minimal dokka configuration:
+Groovy
```groovy
dokka {
outputFormat = 'html'
- outputDirectory = "$buildDir/javadoc"
+ outputDirectory = "$buildDir/dokka"
+}
+```
+
+Kotlin
+```kotlin
+tasks {
+ val dokka by getting(DokkaTask::class) {
+ outputFormat = "html"
+ outputDirectory = "$buildDir/dokka"
+ }
}
```
[Output formats](#output_formats)
-The available configuration options are shown below:
+The available configuration options for single platform are shown below:
```groovy
dokka {
- moduleName = 'data'
outputFormat = 'html'
outputDirectory = "$buildDir/javadoc"
- // These tasks will be used to determine source directories and classpath
- kotlinTasks {
- defaultKotlinTasks() + [':some:otherCompileKotlin', project("another").compileKotlin]
- }
-
- // List of files with module and package documentation
- // https://kotlinlang.org/docs/reference/kotlin-doc.html#module-and-package-documentation
- includes = ['packages.md', 'extra.md']
-
- // The list of files or directories containing sample code (referenced with @sample tags)
- samples = ['samples/basic.kt', 'samples/advanced.kt']
-
- jdkVersion = 6 // Used for linking to JDK
+ // In case of a Gradle multiproject build, you can include subprojects here to get merged documentation
+ // Note however, that you have to have the Kotlin plugin available in the root project and in the subprojects
+ subProjects = ["subproject1", "subproject2"]
+
+ // Used for disabling auto extraction of sources and platforms in both multi-platform and single-platform modes
+ // When set to true, subProject and kotlinTasks are also omitted
+ disableAutoconfiguration = false
// 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
+ // When this is set to default, caches are stored in $USER_HOME/.cache/dokka
cacheRoot = 'default'
- // Use to include or exclude non public members.
- includeNonPublic = false
-
- // Do not output deprecated members. Applies globally, can be overridden by packageOptions
- skipDeprecated = false
-
- // Emit warnings about not documented members. Applies globally, also can be overridden by packageOptions
- reportUndocumented = true
-
- skipEmptyPackages = true // Do not create index pages for empty packages
-
- impliedPlatforms = ["JVM"] // See platforms section of documentation
-
- // Manual adding files to classpath
- // This property doesn't override classpath collected from kotlinTasks but appends to it
- classpath = [new File("$buildDir/other.jar")]
+ configuration {
+ moduleName = 'data'
- // By default, sourceRoots is taken from kotlinTasks, following roots will be appended to it
- // Short form sourceRoots
- sourceDirs = files('src/main/kotlin')
+ // Use to include or exclude non public members.
+ includeNonPublic = false
+
+ // Do not output deprecated members. Applies globally, can be overridden by packageOptions
+ skipDeprecated = false
+
+ // Emit warnings about not documented members. Applies globally, also can be overridden by packageOptions
+ reportUndocumented = true
+
+ // Do not create index pages for empty packages
+ skipEmptyPackages = true
+
+ // This is a list of platform names that will be shown in the final result. See the "Platforms" section of this readme
+ targets = ["JVM"]
+
+ // Platform used for code analysis. See the "Platforms" section of this readme
+ platform = "JVM"
+
+ // Property used for manual addition of files to the classpath
+ // This property does not override the classpath collected automatically but appends to it
+ classpath = [new File("$buildDir/other.jar")]
- // By default, sourceRoots is taken from kotlinTasks, following roots will be appended to it
- // Full form sourceRoot declaration
- // Repeat for multiple sourceRoots
- sourceRoot {
- // Path to source root
- path = "src"
- // See platforms section of documentation
- platforms = ["JVM"]
- }
+ // By default, sourceRoots are taken from Kotlin Plugin, subProjects and kotlinTasks, following roots will be appended to them
+ sourceRoots = [files('src/main/kotlin')]
+
+ // List of files with module and package documentation
+ // https://kotlinlang.org/docs/reference/kotlin-doc.html#module-and-package-documentation
+ includes = ['packages.md', 'extra.md']
- // Specifies the location of the project source code on the Web.
- // If provided, Dokka generates "source" links for each declaration.
- // Repeat for multiple mappings
- linkMapping {
- // Unix based directory relative path to the root of the project (where you execute gradle respectively).
- dir = "src/main/kotlin" // or simply "./"
-
- // 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" //remove src/main/kotlin if you use "./" above
+ // List of files or directories containing sample code (referenced with @sample tags)
+ samples = ['samples/basic.kt', 'samples/advanced.kt']
+
+ // By default, sourceRoots are taken from Kotlin Plugin, subProjects and kotlinTasks, following roots will be appended to them
+ // Full form sourceRoot declaration
+ // Repeat for multiple sourceRoots
+ sourceRoot {
+ // Path to a source root
+ path = "src"
+ }
- // Suffix which is used to append the line number to the URL. Use #L for GitHub
- suffix = "#L"
+ // These tasks will be used to determine source directories and classpath
+ kotlinTasks {
+ defaultKotlinTasks() + [':some:otherCompileKotlin', project("another").compileKotlin]
+ }
+
+ // Specifies the location of the project source code on the Web.
+ // If provided, Dokka generates "source" links for each declaration.
+ // Repeat for multiple mappings
+ sourceLink {
+ // Unix based directory relative path to the root of the project (where you execute gradle respectively).
+ path = "src/main/kotlin" // or simply "./"
+
+ // 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" //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"
+ }
+
+ // Used for linking to JDK documentation
+ jdkVersion = 6
+
+ // Disable linking to online kotlin-stdlib documentation
+ noStdlibLink = false
+
+ // Disable linking to online JDK documentation
+ noJdkLink = false
+
+ // Allows linking to documentation of the project's dependencies (generated with Javadoc or Dokka)
+ // Repeat for multiple links
+ externalDocumentationLink {
+ // Root URL of the generated documentation to link with. The trailing slash is required!
+ url = new URL("https://example.com/docs/")
+
+ // If package-list file is located in non-standard location
+ // packageListUrl = new URL("file:///home/user/localdocs/package-list")
+ }
+
+ // Allows to customize documentation generation options on a per-package basis
+ // Repeat for multiple packageOptions
+ perPackageOption {
+ prefix = "kotlin" // will match kotlin and all sub-packages of it
+ // All options are optional, default values are below:
+ skipDeprecated = false
+ reportUndocumented = true // Emit warnings about not documented members
+ includeNonPublic = false
+ }
+ // Suppress a package
+ perPackageOption {
+ prefix = "kotlin.internal" // will match kotlin.internal and all sub-packages of it
+ suppress = true
+ }
}
-
- // Disable linking to online kotlin-stdlib documentation
- noStdlibLink = false
-
- // Disable linking to online JDK documentation
- noJdkLink = false
-
- // Allows linking to documentation of the project's dependencies (generated with Javadoc or Dokka)
- // Repeat for multiple links
- externalDocumentationLink {
- // Root URL of the generated documentation to link with. The trailing slash is required!
- url = new URL("https://example.com/docs/")
+}
+```
+
+#### Multiplatform
+Since version 0.10.0 dokka supports multiplatform projects. For a general understanding how a multiplatform documentation is generated, please consult the [FAQ](https://github.com/Kotlin/dokka/wiki/faq).
+In the multiplatform mode, instead of using the `configuration` block, you should use a `multiplatform` block with inner blocks for each platform.
+The `configuration` block's parameters belong to those inner blocks, which can be named arbitrarly, however if you want to use source roots and classpath provided by Kotlin Multiplatform plugin,
+they must have the same names as in the Kotlin Multiplatform plugin. See an example below:
+
+Groovy
+```groovy
+kotlin { // Kotlin Multiplatform plugin configuration
+ jvm()
+ js("customName") // Define a js platform named "customName" If you want to generate docs for it, you need to have this name in dokka configuration below
+}
+
+dokka {
+ outputDirectory = "$buildDir/dokka"
+ outputFormat = "html"
+
+ multiplatform {
+ customName { // The same name as in Kotlin Multiplatform plugin, so the sources are fetched automatically
+ includes = ['packages.md', 'extra.md']
+ samples = ['samples/basic.kt', 'samples/advanced.kt']
+ }
- // If package-list file located in non-standard location
- // packageListUrl = new URL("file:///home/user/localdocs/package-list")
+ differentName { // Different name, so source roots, classpath and platform must be passed explicitly.
+ targets = ["JVM"]
+ platform = "jvm"
+ sourceRoot {
+ path = kotlin.sourceSets.jvmMain.kotlin.srcDirs[0]
+ }
+ sourceRoot {
+ path = kotlin.sourceSets.commonMain.kotlin.srcDirs[0]
+ }
+ }
}
-
- // Allows to customize documentation generation options on a per-package basis
- // Repeat for multiple packageOptions
- packageOptions {
- prefix = "kotlin" // will match kotlin and all sub-packages of it
- // All options are optional, default values are below:
- skipDeprecated = false
- reportUndocumented = true // Emit warnings about not documented members
- includeNonPublic = false
+}
+```
+
+Kotlin
+```kotlin
+kotlin { // Kotlin Multiplatform plugin configuration
+ jvm()
+ js("customName")
+}
+
+val dokka by getting(DokkaTask::class) {
+ outputDirectory = "$buildDir/dokka"
+ outputFormat = "html"
+
+ multiplatform {
+ val customName by creating { // The same name as in Kotlin Multiplatform plugin, so the sources are fetched automatically
+ includes = listOf("packages.md", "extra.md")
+ samples = listOf("samples/basic.kt", "samples/advanced.kt")
+ }
+
+ register("differentName") { // Different name, so source roots must be passed explicitly
+ targets = listOf("JVM")
+ platform = "jvm"
+ sourceRoot {
+ path = kotlin.sourceSets.getByName("jvmMain").kotlin.srcDirs.first().toString()
+ }
+ sourceRoot {
+ path = kotlin.sourceSets.getByName("commonMain").kotlin.srcDirs.first().toString()
+ }
+ }
+ }
}
- // Suppress a package
- packageOptions {
- prefix = "kotlin.internal" // will match kotlin.internal and all sub-packages of it
- suppress = true
+```
+
+For convenience, there is also a reserved block called `global`, which is a top-level configuration of `perPackageOptions`, `externalDocumentationLinks`, and `sourceLinks` shared by every platform. Eg.
+
+```groovy
+dokka {
+ multiplatform {
+ global { // perPackageOptions, sourceLinks and externalDocumentationLinks from here will be copied to every other platform (jvm and js in eg.)
+ perPackageOption {
+ prefix = "com.somePackage"
+ suppress = true
+ }
+ perPackageOption { // You can repeat this block for multiple perPackageOptions
+ prefix = "kotlin"
+ skipDeprecated = false
+ reportUndocumented = true
+ includeNonPublic = false
+ }
+ sourceLink {
+ path = "src/main/kotlin"
+ url = "https://github.com/cy6erGn0m/vertx3-lang-kotlin/blob/master/src/main/kotlin"
+ lineSuffix = "#L"
+ }
+ externalDocumentationLink {
+ url = new URL("https://example.com/docs/")
+ }
+ }
+ js {}
+ jvm {}
}
}
```
+The parameters from the `global` block are appended to all the other platform configurations (in the example - `js` and `jvm`) and cannot be overriden.
+
+
+Note that `javadoc` output format cannot be used with multiplatform.
To generate the documentation, use the `dokka` Gradle task:
@@ -167,16 +293,16 @@ To generate the documentation, use the `dokka` Gradle task:
More dokka tasks can be added to a project like this:
```groovy
-task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {
- outputFormat = 'javadoc'
- outputDirectory = "$buildDir/javadoc"
+task dokkaMarkdown(type: org.jetbrains.dokka.gradle.DokkaTask) {
+ outputFormat = 'markdown'
+ outputDirectory = "$buildDir/markdown"
}
```
Please see the [Dokka Gradle example project](https://github.com/JetBrains/kotlin-examples/tree/master/gradle/dokka-gradle-example) for an example.
#### Dokka Runtime
-If you are using Gradle plugin and you want to change the version of Dokka, you can do it by setting `dokkaRuntime`:
+If you are using Gradle plugin and you want to use a custom version of dokka, you can do it by setting `dokkaRuntime` configuration:
```groovy
buildscript {
@@ -190,16 +316,46 @@ repositories {
}
dependencies {
- dokkaRuntime "org.jetbrains.dokka:dokka-fatjar:0.9.18"
+ dokkaRuntime "org.jetbrains.dokka:dokka-fatjar:0.10.0"
+}
+
+dokka {
+ outputFormat = 'html'
+ outputDirectory = "$buildDir/dokkaHtml"
}
+
```
+To use your Fat Jar, just set the path to it:
+
+ ```groovy
+ buildscript {
+ ...
+ }
+
+ apply plugin: 'org.jetbrains.dokka'
+
+ repositories {
+ jcenter()
+ }
+
+ dependencies {
+ dokkaRuntime files("/path/to/fatjar/dokka-fatjar-0.10.0.jar")
+ }
+
+ dokka {
+ outputFormat = 'html'
+ outputDirectory = "$buildDir/dokkaHtml"
+ }
+
+ ```
#### FAQ
If you encounter any problems, please see the [FAQ](https://github.com/Kotlin/dokka/wiki/faq).
#### Android
-If you are using Android there is a separate Gradle plugin. Just make sure you apply the plugin after
+Since version 0.10.0 the separate Android plugin is merged with the default one.
+Just make sure you apply the plugin after
`com.android.library` and `kotlin-android`.
```groovy
@@ -208,7 +364,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:${dokka_version}"
+ classpath "org.jetbrains.dokka:dokka-gradle-plugin:${dokka_version}"
}
}
repositories {
@@ -216,11 +372,17 @@ repositories {
}
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
-apply plugin: 'org.jetbrains.dokka-android'
+apply plugin: 'org.jetbrains.dokka'
```
+There is also a `noAndroidSdkLink` configuration parameter that works similar to `noJdkLink` and `noStdlibLink`
+By default the variant documented by dokka is the first release variant encountered. If you want to change that,
+you can disable the autoconfiguration and configure dokka manually.
+
### Using the Maven plugin
+The Maven plugin does not support multiplatform projects.
+
The Maven plugin is available in JCenter. You need to add the JCenter repository to the list of plugin repositories if it's not there:
```xml
@@ -298,9 +460,9 @@ The available configuration options are shown below:
</includes>
<!-- List of sample roots -->
- <samplesDirs>
+ <samples>
<dir>src/test/samples</dir>
- </samplesDirs>
+ </samples>
<!-- Used for linking to JDK, default: 6 -->
<jdkVersion>6</jdkVersion>
@@ -308,15 +470,10 @@ The available configuration options are shown below:
<!-- 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 -->
- <reportNotDocumented>true</reportNotDocumented>
+ <reportUndocumented>true</reportUndocumented>
<!-- Do not create index pages for empty packages -->
<skipEmptyPackages>true</skipEmptyPackages>
- <!-- See platforms section of documentation -->
- <impliedPlatforms>
- <platform>JVM</platform>
- </impliedPlatforms>
-
<!-- Short form list of sourceRoots, by default, set to ${project.compileSourceRoots} -->
<sourceDirectories>
<dir>src/main/kotlin</dir>
@@ -336,11 +493,11 @@ The available configuration options are shown below:
<sourceLinks>
<link>
<!-- Source directory -->
- <dir>${project.basedir}/src/main/kotlin</dir>
+ <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 -->
- <urlSuffix>#L</urlSuffix>
+ <lineSuffix>#L</lineSuffix>
</link>
</sourceLinks>
@@ -383,61 +540,72 @@ Please see the [Dokka Maven example project](https://github.com/JetBrains/kotlin
### Using the Ant task
-The Ant task definition is also contained in the dokka-fatjar.jar referenced above. Here's an example of using it:
+The Ant task definition is also contained in the dokka-fatjar.jar referenced above. Here's an example usage:
```xml
<project name="Dokka" default="document">
- <typedef resource="dokka-antlib.xml" classpath="dokka-fatjar.jar"/>
+ <typedef resource="dokka-antlib.xml" classpath="dokka-fatjar.jar"/>
- <target name="document">
- <dokka src="src" outputdir="doc" modulename="myproject"/>
- </target>
+ <target name="document">
+ <dokka format="html" outputDir="doc"/>
+ </target>
</project>
```
The Ant task supports the following attributes:
* `outputDir` - the output directory where the documentation is generated
- * `outputFormat` - the output format (see the list of supported formats above)
+ * `format` - the output format (see the list of supported formats below)
+ * `cacheRoot` - 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
+
+Inside the `dokka` tag you can create another tags named `<passconfig/>` that support the following attributes:
+
* `classpath` - list of directories or .jar files to include in the classpath (used for resolving references)
* `samples` - list of directories containing sample code (documentation for those directories is not generated but declarations from them can be referenced using the `@sample` tag)
* `moduleName` - the name of the module being documented (used as the root directory of the generated documentation)
* `include` - names of files containing the documentation for the module and individual packages
* `skipDeprecated` - if set, deprecated elements are not included in the generated documentation
* `jdkVersion` - version for linking to JDK
- * `impliedPlatforms` - See [platforms](#platforms) section
- * `<sourceRoot path="src" platforms="JVM" />` - analogue of src, but allows to specify [platforms](#platforms)
+ * `analysisPlatform="jvm"` - platform used for analysing sourceRoots, see the [platforms](#platforms) section
+ * `<sourceRoot path="src" />` - source root
* `<packageOptions prefix="kotlin" includeNonPublic="false" reportUndocumented="true" skipDeprecated="false"/>` -
Per package options for package `kotlin` and sub-packages of it
* `noStdlibLink` - disable linking to online kotlin-stdlib documentation
* `noJdkLink` - disable linking to online JDK documentation
* `<externalDocumentationLink url="https://example.com/docs/" packageListUrl="file:///home/user/localdocs/package-list"/>` -
linking to external documentation, packageListUrl should be used if package-list located not in standard location
- * `cacheRoot` - 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
+ * `<target value="JVM"/>` - see the [platforms](#platforms) section
### Using the Command Line
-To run Dokka from the command line, download the [Dokka jar](https://github.com/Kotlin/dokka/releases/download/0.9.10/dokka-fatjar.jar).
+To run Dokka from the command line, download the [Dokka jar](https://github.com/Kotlin/dokka/releases/download/0.10.0/dokka-fatjar.jar).
To generate documentation, run the following command:
- java -jar dokka-fatjar.jar <source directories> <arguments>
+ java -jar dokka-fatjar.jar <arguments>
Dokka supports the following command line arguments:
* `-output` - the output directory where the documentation is generated
* `-format` - the [output format](#output-formats):
- * `-classpath` - list of directories or .jar files to include in the classpath (used for resolving references)
- * `-samples` - list of directories containing sample code (documentation for those directories is not generated but declarations from them can be referenced using the `@sample` tag)
- * `-module` - the name of the module being documented (used as the root directory of the generated documentation)
- * `-include` - names of files containing the documentation for the module and individual packages
- * `-nodeprecated` - if set, deprecated elements are not included in the generated documentation
- * `-impliedPlatforms` - list of implied platforms (comma-separated)
- * `-packageOptions` - list of package options in format `prefix,-deprecated,-privateApi,+warnUndocumented;...`
- * `-links` - external documentation links in format `url^packageListUrl^^url2...`
- * `-noStdlibLink` - disable linking to online kotlin-stdlib documentation
- * `-noJdkLink` - disable linking to online JDK documentation
* `-cacheRoot` - 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
+ * `-pass` - (repeatable) - configuration for single analyser pass. Following this argument, you can pass other arguments:
+ * `-src` - (repeatable) - source file or directory (allows many paths separated by the system path separator)
+ * `-classpath` - (repeatable) - directory or .jar file to include in the classpath (used for resolving references)
+ * `-sample` - (repeatable) - directory containing a sample code (documentation for those directories is not generated but declarations from them can be referenced using the `@sample` tag)
+ * `-module` - the name of the module being documented (used as the root directory of the generated documentation)
+ * `-include` - (repeatable) - names of files containing the documentation for the module and individual packages
+ * `-skipDeprecated` - if set, deprecated elements are not included in the generated documentation
+ * `-reportUndocumented` - warn about undocumented members
+ * `-skipEmptyPackages` - do not create index pages for empty packages
+ * `-packageOptions` - list of package options in format `prefix,-deprecated,-privateApi,+warnUndocumented;prefix, ...`
+ * `-links` - external documentation links in format `url^packageListUrl^^url2...`
+ * `-srcLink` - (repeatable) - mapping between a source directory and a Web site for browsing the code in format `<path>=<url>[#lineSuffix]`
+ * `-noStdlibLink` - disable linking to online kotlin-stdlib documentation
+ * `-noJdkLink` - disable linking to online JDK documentation
+ * `-jdkVersion` - version of JDK to use for linking to JDK JavaDoc
+ * `-analysisPlatform` - platform used for analysis, see the [Platforms](#platforms) section
+ * `-target` - (repeatable) - generation target
### Output formats<a name="output_formats"></a>
@@ -453,55 +621,23 @@ Dokka supports the following command line arguments:
### Platforms<a name="platforms"></a>
Dokka can annotate elements with special `platform` block with platform requirements
+Example result and usage can be found on [kotlinlang.org](https://kotlinlang.org/api/latest/jvm/stdlib/)
-Example of usage can be found on [kotlinlang.org](https://kotlinlang.org/api/latest/jvm/stdlib/)
-
-Each source root has a list of platforms for which members are suitable.
-Also, the list of 'implied' platforms is passed to Dokka.
-If a member is not available for all platforms in the implied platforms set, its documentation will show
-the list of platforms for which it's available.
-
-## Dokka Internals
-
-### Documentation Model
-
-Dokka uses Kotlin-as-a-service technology to build `code model`, then processes it into `documentation model`.
-`Documentation model` is graph of items describing code elements such as classes, packages, functions, etc.
+Each multiplatform closure has two properties: `platform` and `targets`. If you use autoconfiguration, those are filled automatically.
-Each node has semantic attached, e.g. Value:name -> Type:String means that some value `name` is of type `String`.
+`targets` property is a list of platform names that will be shown in the final result. Note that the value of this property
+doesn't affect analysis of source code, it just changes the result. You can think of this as a `name` property
-Each reference between nodes also has semantic attached, and there are three of them:
-
-1. Member - reference means that target is member of the source, form tree.
-2. Detail - reference means that target describes source in more details, form tree.
-3. Link - any link to any other node, free form.
-
-Member & Detail has reverse Owner reference, while Link's back reference is also Link.
-
-Nodes that are Details of other nodes cannot have Members.
-
-### Rendering Docs
-
-When we have documentation model, we can render docs in various formats, languages and layouts. We have some core services:
-
-* FormatService -- represents output format
-* LocationService -- represents folder and file layout
-* SignatureGenerator -- represents target language by generating class/function/package signatures from model
-
-Basically, given the `documentation` as a model, we do this:
-
-```kotlin
- val signatureGenerator = KotlinSignatureGenerator()
- val locationService = FoldersLocationService(arguments.outputDir)
- val markdown = JekyllFormatService(locationService, signatureGenerator)
- val generator = FileGenerator(signatureGenerator, locationService, markdown)
- generator.generate(documentation)
-```
+`platform` property is used for the analysis of source roots. Available values are:
+ * `jvm`
+ * `js`
+ * `native`
+ * `common`
-## Building Dokka
+## Building dokka
Dokka is built with Gradle. To build it, use `./gradlew build`.
-Alternatively, open the project directory in IntelliJ IDEA and use the IDE to build and run Dokka.
+Alternatively, open the project directory in IntelliJ IDEA and use the IDE to build and run dokka.
Here's how to import and configure Dokka in IntelliJ IDEA:
* Select "Open" from the IDEA welcome screen, or File > Open if a project is