Плагины Dokka
Dokka была разработана с нуля, чтобы быть легко расширяемой и настраиваемой, что позволяет сообществу реализовывать плагины для отсутствующих или очень специфичных функций, которые не предоставляются по умолчанию.
Плагины Dokka варьируются от поддержки других языков программирования до экзотических форматов вывода. Вы можете добавить поддержку собственных тегов или аннотаций KDoc, научить Dokka рендерить различные DSL, которые встречаются в описаниях KDoc, визуально переработать страницы Dokka, чтобы они были бесшовно интегрированы в веб-сайт вашей компании, интегрировать её с другими инструментами и многое другое.
Если вы хотите узнать, как создавать плагины Dokka, см. Руководства разработчика.
Применение плагинов Dokka
Плагины Dokka публикуются как отдельные артефакты, поэтому для применения плагина Dokka вам нужно только добавить его в качестве зависимости. После этого плагин сам расширяет Dokka — никаких дополнительных действий не требуется.
Давайте посмотрим, как применить плагин mathjax к вашему проекту:
Плагин Gradle для Dokka создает удобные конфигурации зависимостей, которые позволяют применять плагины универсально или только для определенного формата вывода.
dependencies {
// Is applied universally
dokkaPlugin("org.jetbrains.dokka:mathjax-plugin:1.8.20")
// Is applied for the single-module dokkaHtml task only
dokkaHtmlPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:1.8.20")
// Is applied for HTML format in multi-project builds
dokkaHtmlPartialPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:1.8.20")
}
Плагин Gradle для Dokka создаёт удобные конфигурации зависимостей, которые позволяют применять плагины Dokka универсально или только для определённого формата вывода.
dependencies {
// Is applied universally
dokkaPlugin 'org.jetbrains.dokka:mathjax-plugin:1.8.20'
// Is applied for the single-module dokkaHtml task only
dokkaHtmlPlugin 'org.jetbrains.dokka:kotlin-as-java-plugin:1.8.20'
// Is applied for HTML format in multi-project builds
dokkaHtmlPartialPlugin 'org.jetbrains.dokka:kotlin-as-java-plugin:1.8.20'
}
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>dokka-maven-plugin</artifactId>
...
<configuration>
<dokkaPlugins>
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>mathjax-plugin</artifactId>
<version>1.8.20</version>
</plugin>
</dokkaPlugins>
</configuration>
</plugin>
Если вы используете исполняемый CLI с параметрами командной строки, плагины Dokka должны передаваться как .jar файлы в -pluginsClasspath:
java -jar dokka-cli-1.8.20.jar \
-pluginsClasspath "./dokka-base-1.8.20.jar;...;./mathjax-plugin-1.8.20.jar" \
...
Если вы используете конфигурацию JSON, плагины Dokka должны быть указаны в pluginsClasspath.
{
...
"pluginsClasspath": [
"./dokka-base-1.8.20.jar",
"...",
"./mathjax-plugin-1.8.20.jar"
],
...
}
Настройка плагинов Dokka
Плагины Dokka также могут иметь собственные параметры конфигурации. Чтобы узнать, какие параметры доступны, обратитесь к документации используемых плагинов.
Давайте посмотрим, как можно настроить плагин DokkaBase, отвечающий за создание HTML-документации, добавив пользовательское изображение в ресурсы (customAssets опция), добавив пользовательские стили (customStyleSheets опция) и изменив сообщение в подвале (footerMessage опция):
Kotlin DSL Gradle позволяет проводить безопасную настройку плагинов. Это достигается добавлением артефакта плагина в зависимости в блоке buildscript, а затем импортом классов плагина и конфигурации:
import org.jetbrains.dokka.base.DokkaBase
import org.jetbrains.dokka.gradle.DokkaTask
import org.jetbrains.dokka.base.DokkaBaseConfiguration
buildscript {
dependencies {
classpath("org.jetbrains.dokka:dokka-base:1.8.20")
}
}
tasks.withType<DokkaTask>().configureEach {
pluginConfiguration<DokkaBase, DokkaBaseConfiguration> {
customAssets = listOf(file("my-image.png"))
customStyleSheets = listOf(file("my-styles.css"))
footerMessage = "(c) 2022 MyOrg"
}
}
В качестве альтернативы, плагины можно настроить через JSON. В этом случае дополнительные зависимости не требуются.
import org.jetbrains.dokka.gradle.DokkaTask
tasks.withType<DokkaTask>().configureEach {
val dokkaBaseConfiguration = """
{
"customAssets": ["${file("assets/my-image.png")}"],
"customStyleSheets": ["${file("assets/my-styles.css")}"],
"footerMessage": "(c) 2022 MyOrg"
}
"""
pluginsMapConfiguration.set(
mapOf(
// fully qualified plugin name to json configuration
"org.jetbrains.dokka.base.DokkaBase" to dokkaBaseConfiguration
)
)
}
import org.jetbrains.dokka.gradle.DokkaTask
tasks.withType(DokkaTask.class) {
String dokkaBaseConfiguration = """
{
"customAssets": ["${file("assets/my-image.png")}"],
"customStyleSheets": ["${file("assets/my-styles.css")}"],
"footerMessage": "(c) 2022 MyOrg"
}
"""
pluginsMapConfiguration.set(
// fully qualified plugin name to json configuration
["org.jetbrains.dokka.base.DokkaBase": dokkaBaseConfiguration]
)
}
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>dokka-maven-plugin</artifactId>
...
<configuration>
<pluginsConfiguration>
<!-- Fully qualified plugin name -->
<org.jetbrains.dokka.base.DokkaBase>
<!-- Options by name -->
<customAssets>
<asset>${project.basedir}/my-image.png</asset>
</customAssets>
<customStyleSheets>
<stylesheet>${project.basedir}/my-styles.css</stylesheet>
</customStyleSheets>
<footerMessage>(c) MyOrg 2022 Maven</footerMessage>
</org.jetbrains.dokka.base.DokkaBase>
</pluginsConfiguration>
</configuration>
</plugin>
Если вы используете исполняемый CLI с параметрами командной строки, используйте параметр -pluginsConfiguration, принимающий конфигурацию JSON в форме fullyQualifiedPluginName=json.
Если вам нужно настроить несколько плагинов, вы можете передавать несколько значений, разделённых ^^.
java -jar dokka-cli-1.8.20.jar \
...
-pluginsConfiguration "org.jetbrains.dokka.base.DokkaBase={\"customAssets\": [\"my-image.png\"], \"customStyleSheets\": [\"my-styles.css\"], \"footerMessage\": \"(c) 2022 MyOrg CLI\"}"
Если вы используете конфигурацию JSON, существует аналогичный массив pluginsConfiguration, который принимает конфигурацию JSON в формате values.
{
"moduleName": "Dokka Example",
"pluginsConfiguration": [
{
"fqPluginName": "org.jetbrains.dokka.base.DokkaBase",
"serializationFormat": "JSON",
"values": "{\"customAssets\": [\"my-image.png\"], \"customStyleSheets\": [\"my-styles.css\"], \"footerMessage\": \"(c) 2022 MyOrg\"}"
}
]
}
Заслуживающие внимания плагины
Вот некоторые важные плагины Dokka, которые могут быть полезны:
Имя |
Описание |
|---|---|
Улучшает опыт документирования в Android |
|
Добавляет выбор версии и помогает организовать документацию для разных версий вашего приложения/библиотеки |
|
Рендерит диаграммы и визуализации MermaidJS, найденные в KDoc |
|
Красиво отображает математические выражения, найденные в KDoc |
|
Рендерит сигнатуры Kotlin с точки зрения Java |
Если вы автор плагина Dokka и хотите добавить свой плагин в этот список, свяжитесь с разработчиками через Slack или GitHub.
© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/dokka-plugins.html