如何让Dokka生成可直接部署到GitHub Wiki的文档?
实现Dokka Maven生成的Markdown直接部署到GitHub Wiki的方案
嘿,我之前刚好解决过一模一样的需求!下面给你分享几个实操性强的方案,从配置优化到自动部署一步到位:
第一步:调整Dokka配置适配GitHub Wiki格式
首先得让Dokka生成的Markdown完全兼容GitHub Flavored Markdown(GFM),同时优化结构适配Wiki的页面逻辑。修改你的pom.xml里的Dokka插件配置:
<plugin> <groupId>org.jetbrains.dokka</groupId> <artifactId>dokka-maven-plugin</artifactId> <version>1.8.20</version> <!-- 建议使用最新稳定版 --> <executions> <execution> <phase>prepare-package</phase> <goals> <goal>gfm</goal> <!-- 直接生成适配GitHub的GFM格式 --> </goals> </execution> </executions> <configuration> <outputFormat>gfm</outputFormat> <outputDirectory>${project.build.directory}/dokka-gfm</outputDirectory> <moduleName>${project.name}</moduleName> <!-- 优化代码跳转链接,适配GitHub仓库路径 --> <linkMapping> <link> <dir>${project.basedir}/src/main/kotlin</dir> <url>https://github.com/[你的用户名]/[你的仓库名]/blob/main/src/main/kotlin</url> </link> </linkMapping> <!-- 隐藏一些冗余的默认函数文档,让Wiki更清爽 --> <suppressObviousFunctions>true</suppressObviousFunctions> <!-- 配置外部依赖文档链接,比如Kotlin标准库 --> <externalDocumentationLinks> <link> <url>https://kotlinlang.org/api/latest/jvm/stdlib/</url> </link> </externalDocumentationLinks> </configuration> </plugin>
执行mvn dokka:gfm之后,会在target/dokka-gfm下生成适配GFM的完整文档。
第二步:同步到GitHub Wiki仓库
GitHub Wiki本质是一个独立的Git仓库,地址格式为https://github.com/[你的用户名]/[你的仓库名].wiki.git。我们可以通过两种方式实现同步:
方式一:手动/脚本同步
- 先把Wiki仓库克隆到本地(只需执行一次):
git clone https://github.com/[你的用户名]/[你的仓库名].wiki.git ../my-project-wiki
- 编写一个shell脚本
deploy-wiki.sh,负责复制文档并推送:
#!/bin/bash # 清空Wiki仓库旧文档(可选,按需调整) rm -rf ../my-project-wiki/* # 复制Dokka生成的GFM文档 cp -r target/dokka-gfm/* ../my-project-wiki/ # 将Dokka生成的index.md重命名为Home.md(GitHub Wiki默认首页为Home.md) mv ../my-project-wiki/index.md ../my-project-wiki/Home.md 2>/dev/null || true # 提交并推送更新 cd ../my-project-wiki git add . git commit -m "Update wiki from Dokka build" git push origin main
- 在Maven中配置
exec-maven-plugin,让构建完成后自动执行脚本:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <phase>deploy</phase> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>bash</executable> <arguments> <argument>deploy-wiki.sh</argument> </arguments> </configuration> </plugin>
之后执行mvn deploy就会自动把文档推送到Wiki仓库了。
方式二:GitHub Actions自动化部署
如果想实现代码推送后自动更新Wiki,推荐用GitHub Actions:
在项目根目录创建.github/workflows/deploy-wiki.yml:
name: Deploy Dokka Wiki to GitHub Wiki on: push: branches: [ main ] jobs: deploy-wiki: runs-on: ubuntu-latest steps: - name: Checkout project code uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: maven - name: Generate Dokka GFM docs run: mvn dokka:gfm - name: Clone Wiki repository run: git clone https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.wiki.git wiki-repo - name: Update Wiki content run: | rm -rf wiki-repo/* cp -r target/dokka-gfm/* wiki-repo/ mv wiki-repo/index.md wiki-repo/Home.md 2>/dev/null || true - name: Push Wiki changes run: | cd wiki-repo git config user.name "GitHub Actions" git config user.email "actions@github.com" git add . git commit -m "Update Wiki via Dokka (commit: ${{ github.sha }})" git push origin main
这样每次推代码到main分支,Actions就会自动生成并更新Wiki,完全不用手动操作!
注意事项
- 如果Dokka生成了图片资源,要确保这些图片也被复制到Wiki仓库,路径会自动适配
- 多模块项目需要调整Dokka的
multiModule配置,生成的文档结构会更清晰 - 首次推送Wiki前,建议手动创建一个空的Home.md,避免仓库为空导致的推送问题
内容的提问来源于stack exchange,提问作者Mackenzie Bligh




