Sa-Token 开源贡献实战:从 Fork、本地开发、测试到提交 Pull Request 的完整流程
2026/9/13 2:58:16 网站建设 项目流程

Sa-Token 开源贡献实战:从 Fork、本地开发、测试到提交 Pull Request 的完整流程

【免费下载链接】Sa-Token✨ 开源、免费、一站式 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式 Session 会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证、jwt 集成、API Key 秘钥授权、API 参数签名项目地址: https://gitcode.com/GitHub_Trending/sa/Sa-Token

本文以 Sa-Token 仓库官方文档 git-pr.md(《为 Sa-Token 贡献代码》)为主线,完整还原"修改在线文档、提交代码、发起 PR、同步上游"四类贡献场景的标准操作,并结合仓库根 POM、测试基础设施与文档站源码,补充当前版本(1.46.0)下本地构建、运行测试、修改文档站的真实环境与命令细节,帮助你在动手贡献前把整条链路走通。

一、贡献 Sa-Token 的两条路径

从官方文档看,对 Sa-Token 的贡献分为两类:

贡献类型载体修改位置适用场景
修改在线文档Gitee / GitHub 网页编辑器文档 Markdown 源码订正错别字、补充示例、完善章节说明
提交代码本地 Fork + Git 工作流 + PRJava 源码 / 插件 / 测试修复 Bug、实现功能、补充测试

两类路径最终都通过 PR(Pull Request)进入主仓库审查,下文分别展开。

二、如何更新在线文档

适合不打算搭本地开发环境的轻量贡献。官方文档给出的完整步骤如下:

  1. 打开要修改的文档页面;
  2. 滑动右侧页面滑块,查看页面内容最下方、评论区上方;
  3. 找到提示在线编辑入口的那一行文字;
  4. 点击 Gitee 或 GitHub 按钮中的任意一个进入源码预览页面(国内用户推荐 Gitee,需先注册登录);
  5. 在源码预览页找到下方的按钮组,点击"编辑"按钮;
  6. 进入待修改页面的源码页面,按照 Markdown 格式编辑为需要的结果(Ctrl+P可查看最终渲染效果,再次按下可恢复源码界面);
  7. 滑动到最下方,点击"提交审核"即可。

提交后你的修改会以 PR 形式等待维护者审查合并,流程与下文代码提交一致。

三、本地开发环境安装(代码贡献)

3.1 Git 与身份配置

按照官方文档,最小环境为:Git + Java JDK 8+ + 最新版 Maven + IDEA(社区版即可)。具体步骤:

  1. 安装 Git 软件;
  2. 配置用户名和邮件地址(填写 Gitee 或 GitHub 上关联的邮箱):
git config --global user.name "这里替换为你在项目中希望展示的昵称" git config --global user.email "这里替换为你的关联邮箱" # 查看是否配置正确 git config --list
  1. 为了让代码托管服务器认可你的身份,需要配置一次 SSH Key:在本地生成密钥对,把公钥上传到 Gitee/GitHub 服务器后台(两家平台的官方帮助中心均有图文说明);
  2. 在 IDEA 中完成 Java SDK 与 Maven 环境的配置(属于 IDE 基础操作,官方文档不再赘述)。

当前仓库的实际环境要求(可与上表对照):

  • 根 POM pom.xml 中<revision>1.46.0<jdk.version>1.8,且maven.compiler.release显式设为8——即编译目标就是 JDK 8,使用 JDK 8 或更高版本(如 JDK 11/17/21)均可打开工程,但产物以 Java 8 字节码为准;
  • Maven 需支持<revision>CI-Friendly 版本号(Maven 3.5+ 原生支持),根 POM 通过flatten-maven-plugin(见 pom.xml)在process-resources阶段解析该占位符,旧版本 Maven 可能导致pom.xml解析异常,建议直接使用 Maven 最新稳定版;
  • 项目采用 Apache 2.0 协议(pom.xml),贡献时注意保持协议兼容性。

3.2 为什么国内用户推荐使用 Gitee

官方文档给出的两条理由:

  1. 近期 GitHub 下载网速较慢;
  2. Gitee 中文界面方便操作。

Fork、克隆、PR 的操作在 Gitee 与 GitHub 上基本一致,本文以 Gitee 为例描述。

四、项目下载与载入

4.1 Fork 与克隆

  1. 进入 Sa-Token 项目主页,点击页面右上角按钮组中的Fork按钮;
  2. 选择你的个人仓库并点击确认,此时个人仓库中会多一份 Sa-Token 副本;
  3. 在个人仓库的 Sa-Token 项目中,点击"克隆/下载"按钮并复制对应地址;
  4. 在本地某空文件夹下右键选择git bash here(Windows 环境),执行:
git clone 这里替换为复制后的链接

4.2 在 IDEA 中载入

  1. 克隆完成后,打开 IDEA,选择File -> Open...,选中项目下载后的 Sa-Token 文件夹;
  2. 如提示 Trust Project,选择相信此项目,否则文件不可编辑;
  3. 至此项目进入可编辑状态,修改完代码并测试通过后再提交。

从源码结构看,这是一个多模块 Maven 聚合工程,根 POM(pom.xml)声明了 7 个顶层模块,贡献前建议先搞清楚自己改动的代码落在哪个模块:

sa-token-dependencies 统一依赖版本管理 sa-token-special-dependencies Spring Boot 2/3/4 专用依赖管理 sa-token-bom BOM sa-token-core 核心框架 sa-token-starter 各框架(Spring/Solon/JFinal 等)Starter sa-token-plugin 插件(JWT、OAuth2、SSO、Redis、JSON 序列化等) sa-token-testing 测试基础设施与集成测试

五、代码暂存与提交远程

5.1 方式一:Commit 面板

  1. 在 IDEA 中打开项目,进入 Commit 选项卡;
  2. 勾选需要本地暂存的文件;
  3. 在下方输入区填写提交信息(建议写清楚改动目的与影响模块,便于审查);
  4. 点击Commit暂存到本地,或点击Commit and Push暂存后直接提交到远程。

5.2 方式二:右上角 Git 工具栏

在 IDEA 右上方工具栏的 Git 按钮组中:

  • 指向左下箭头:拉取上游项目,可随时更新;
  • 打对号图标:本地暂存(Commit);
  • 指向右上箭头:提交远程(Push)。

5.3 提交前先跑测试

Sa-Token 对"改完代码先测试"有明确的工具链支撑,当前仓库的约定值得在提交前执行一遍:

  1. 根 POM 默认跳过单测:pom.xml 中<skipTests>true</skipTests><jacoco.skip>true</jacoco.skip>,注释说明"日常 package / install 不跑单测和 JaCoCo"。要跑测需显式打开开关:
mvn test -DskipTests=false
  1. 全量测试入口:仓库根目录提供了 mvn test.bat 脚本,内部执行的正是mvn test -DskipTests=false,并会在结束后打印覆盖率汇总页面路径(sa-token-testing\sa-token-coverage\target\site\jacoco-aggregate\coverage-summary.html等);
  2. 按模块跑测试:sa-token-testing/README.md 给出了各集成测试模块的标准命令,例如验证 Spring Boot 2 Starter 接线:
mvn test -pl sa-token-testing/sa-token-integration-boot2 -am mvn test -pl sa-token-testing/sa-token-integration-boot3 -am mvn test -pl sa-token-testing/sa-token-integration-sso -am

该 README 同时解释了测试模块分工:integration-boot2承担主集成验证,boot3/boot4只补版本差异;integration-beaninject-*以独立 JVM 验证 Bean 注入链路;SSO / OAuth2 / Dubbo / gRPC 各有对应协议级集成测试。修改sa-token-core或 Starter 时,优先跑受影响版本线的对应模块; 4.清理构建产物:根目录 mvn clean.bat 依次清理各 demo 与主模块产物;若需生成覆盖率报告,可参考 mvn-coverage.bat 的等价命令mvn -DskipTests=false -Djacoco.skip=false clean verify -pl sa-token-testing/sa-token-coverage -am(该脚本为 Windows 批处理,Linux/macOS 下可直接用命令行等价形式执行); 5. surefire 配置为forkCount=1runOrder=random(见 pom.xml),即测试按随机顺序执行,贡献测试用例时不要依赖用例之间的执行顺序或共享静态状态——sa-token-testingSaManager全局静态状态污染问题正是通过独立模块/独立 JVM 规避的,新增测试建议遵循同样的隔离思路。

六、从个人仓库向主项目发起 Pull Request

  1. 将代码 Push 到 Gitee 个人仓库中克隆的 Sa-Token 项目后,找到Pull Request按钮(位于个人仓库项目页工具栏);
  2. 点击提交进入 PR 创建页面;
  3. 选择要合并的分支——一般都是dev开发分支
  4. 填写合并信息(说明改了什么、为什么改、如何验证),页面中"测试审查"等选项可不填;
  5. 点击"创建"即完成一次 PR 提交,等待维护者审查。

七、远程项目更新:同步上游主项目

当主仓库更新而你本地克隆的代码已陈旧时,官方文档推荐的做法是网页端同步而非删除重 Fork:

  1. 进入个人仓库的 Sa-Token 项目主页面;
  2. 找到页面中的同步(圆圈)按钮;
  3. 点击后 Gitee 会自动同步主项目最新代码。

本地侧在继续开发前,可先在 IDEA Git 工具栏点击"指向左下箭头"执行拉取,将上游更新合入本地工作分支。

八、进阶:修改文档站源码

在线编辑器只能改文档正文;如果要动侧栏、主题或站点行为,则需要本地跑起文档站。当前仓库同时保留了两套文档源码:

  • sa-token-doc/:旧版(docsify 体系);
  • sa-token-doc-new/:现行文档站源码,基于VitePress,即 sa-token.com 的内容来源。

按 sa-token-doc-new/README.md 的说明,本地修改文档站的完整流程为:

  1. 准备Node 20.11+(建议 22)与 npm;
  2. 安装依赖并本地预览:
cd sa-token-doc-new npm i npm run docs:dev # 本地预览 http://localhost:5173

站点路由约定:/是官网首页(public/index.html),/readme.html是文档介绍页,/blog/是独立博客页; 3. 修改文档正文:直接编辑docs/目录下的 Markdown(本文对应的贡献指南即 sa-token-doc-new/docs/fun/git-pr.md);修改侧栏则编辑.vitepress/sidebar.ts; 4. 构建与发布:npm run docs:build编译到dist/npm run docs:preview可预览构建产物。发布时上传的是dist/编译后的 HTML/JS/CSS,而不是docs/下的 Markdown 源码。

此外,根目录还保留了旧文档站的本地预览脚本 preview-doc.bat(docsify 版,需预装 browser-sync)与 preview-doc-new.bat(内部即npm run docs:dev -- --open),可供对照。

九、贡献前检查清单

综合官方文档与仓库现状,提交前可对照检查:

  1. 身份配置:git config --list能查到正确的 user.name / user.email,SSH 连通性已验证;
  2. 环境匹配:JDK 8+(编译目标 release=8)、Maven 最新版、IDEA 已配置 Java 与 Maven;
  3. 模块定位清楚:改动落在core / starter / plugin / testing哪个模块,是否需要同步更新 sa-token-testing 中的对应集成测试;
  4. 测试通过:至少执行mvn test -DskipTests=false或受影响模块的-pl ... -am命令;
  5. 提交信息规范:写清改动动机、影响范围与验证方式;
  6. PR 指向dev分支,附必要的复现与验证说明。

掌握以上流程后,无论是订正一行文档还是提交一个插件修复,你都已经具备了对 Sa-Token 进行完整贡献的能力:在线编辑走"网页端编辑 + 提交审核",代码贡献走"Fork → Clone → 修改测试 → Push → PR → 上游合并",并可通过 Gitee 网页同步按钮随时刷新个人仓库到最新上游状态。

【免费下载链接】Sa-Token✨ 开源、免费、一站式 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式 Session 会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证、jwt 集成、API Key 秘钥授权、API 参数签名项目地址: https://gitcode.com/GitHub_Trending/sa/Sa-Token

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询