Spec-Zone.ru › Kotlin 1.9

Плагины Dokka

Dokka была разработана с нуля, чтобы быть легко расширяемой и настраиваемой, что позволяет сообществу реализовывать плагины для отсутствующих или очень специфичных функций, которые не предоставляются по умолчанию.

Плагины Dokka варьируются от поддержки других языков программирования до экзотических форматов вывода. Вы можете добавить поддержку собственных тегов или аннотаций KDoc, научить Dokka рендерить различные DSL, которые встречаются в описаниях KDoc, визуально переработать страницы Dokka, чтобы они были бесшовно интегрированы в веб-сайт вашей компании, интегрировать её с другими инструментами и многое другое.

Если вы хотите узнать, как создавать плагины 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")
}

При документировании многопроектных сборок необходимо применять плагины Dokka как в подпроектах, так и в родительском проекте.

Плагин 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'
}

При документировании многопроектных сборок необходимо применять плагины Dokka как в подпроектах, так и в родительском проекте.

<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

Улучшает опыт документирования в Android

Плагин управления версиями

Добавляет выбор версии и помогает организовать документацию для разных версий вашего приложения/библиотеки

Плагин MermaidJS HTML

Рендерит диаграммы и визуализации MermaidJS, найденные в KDoc

Плагин Mathjax HTML

Красиво отображает математические выражения, найденные в KDoc

Плагин Kotlin как Java

Рендерит сигнатуры Kotlin с точки зрения Java

Если вы автор плагина Dokka и хотите добавить свой плагин в этот список, свяжитесь с разработчиками через Slack или GitHub.

Последнее изменение: 25 июля 2023 г.
Javadoc Документация модулей

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API