You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让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。我们可以通过两种方式实现同步:

方式一:手动/脚本同步

  1. 先把Wiki仓库克隆到本地(只需执行一次):
git clone https://github.com/[你的用户名]/[你的仓库名].wiki.git ../my-project-wiki
  1. 编写一个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
  1. 在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

火山引擎 最新活动