直接运行 dokkaHtml 任务即可生成 HTML 文档,前提是正确声明 Dokka 插件(id("org.jetbrains.dokka") version "1.9.20")、启用 Kotlin 插件、且 source set 结构合规;旧式 apply plugin 或 buildscript classpath 方式已过时,会导致任务缺失或静默失效。

Gradle Kotlin项目怎么生成Dokka文档
直接上结论:用 dokkaHtml 任务即可生成 HTML 文档,前提是 Dokka 插件已正确声明、Kotlin 插件已启用、且项目结构符合 Gradle 的 source set 约定。别用旧版 apply plugin 方式,也别在 buildscript 里手动加 classpath —— 那是 Dokka 0.x 时代的写法,现在会报错或静默失效。
为什么 dokkaHtml 找不到或不执行
常见错误现象:Task 'dokkaHtml' not found 或运行后 build/dokka/html 目录为空。
- 没声明插件版本或版本太低:Dokka 要求 Gradle ≥ 7.6、Kotlin Gradle 插件 ≥ 1.9,
plugins { id("org.jetbrains.dokka") version "1.9.20" }必须写在模块级build.gradle.kts顶部(不是根项目) - Kotlin 插件未启用:Dokka 依赖 Kotlin 插件提供的 source set 信息;如果只用了 Java 插件,
dokkaHtml会跳过 main source set - Android 项目中顺序错误:
id("org.jetbrains.dokka")必须放在id("com.android.library")和id("org.jetbrains.kotlin.android")之后,否则无法识别android.sourceSets.main - 多模块项目误配在根项目:在根
build.gradle.kts中写apply(plugin = "...")会导致子项目找不到 source set;应改用applyfalse+subprojects { apply(...) }
dokkaHtml 输出路径和基础配置怎么设
默认输出到 build/dokka/html,但常需自定义:
-
outputDirectory.set(layout.buildDirectory.dir("dokka/html")):推荐用layout.buildDirectory.dir(...),比硬写字符串更可靠 -
moduleName.set("my-sdk"):影响页面标题和导航栏显示,建议设,尤其多模块聚合时 -
includes.from("README.md"):可把项目级说明嵌入首页,但路径必须相对于当前模块根目录 - 不要设
outputFormat:Dokka 1.4+ 已废弃该参数;不同格式对应不同 task(dokkaHtml/dokkaJavadoc/dokkaGfm),直接调用对应 task 即可
示例配置片段:
dokkaHtml {
moduleName.set("core-utils")
outputDirectory.set(layout.buildDirectory.dir("dokka/html"))
includes.from("README.md")
dokkaSourceSets.configureEach {
includeNonPublic.set(false)
skipDeprecated.set(true)
reportUndocumented.set(false)
}
}
生成 Javadoc 格式(供 Maven Central 上传)要注意什么
Maven Central 要求 javadoc.jar 是标准 Javadoc 格式,不能直接用 dokkaHtml 输出:
- 必须用
dokkaJavadoctask,不是dokkaHtml - 输出目录需与
javadocGradle task 默认一致(通常是build/docs/javadoc),否则generateJavadocJar task 可能打包空目录 - 若项目含 Android 代码,
dokkaJavadoc默认不识别android.sourceSets;需显式配置dokkaSourceSets并指定platform.set(Platform.jvm) -
suppressInheritedMembers.set(true)建议开启,避免把toString()、equals()这类无意义方法塞进 Javadoc
最容易被忽略的一点:dokkaJavadoc 生成的内容虽叫 “Javadoc”,但本质仍是 Dokka 渲染的 HTML,只是结构兼容 javadoc tool 输出。它不运行 javax.tools.JavaCompiler,也不解析 @see 的符号引用——所以不要指望它像原生 javadoc 那样做跨模块链接,得靠 jdkLink / stdlibLink 手动配。


















