跳到主要内容

发布检查清单

这页是维护者发布 AI4J 到 Maven Central 和 GitHub Release 前后的最小检查清单。

版本策略​

AI4J 当前采用 全模块同号发布:

  • 发布版:所有发布模块使用同一个稳定版本,例如 2.4.2
  • 开发分支:所有 Maven POM 使用下一个 SNAPSHOT,例如 2.4.3-SNAPSHOT
  • README / docs 示例:写最新已发布稳定版,不写 SNAPSHOT

只改 README、docs-site 或 demo 时,不需要发布新的 Maven 版本。

发布前​

  1. 确认当前分支干净并从 main 切出 release 修复分支。
  2. 把所有 Maven POM 从 *-SNAPSHOT 改成同一个 release 版本。
  3. 同步 README、README-EN 和 docs-site 里的用户安装版本。
  4. 确认 ai4j-bom 覆盖需要对齐的发布模块。
  5. 确认 release profile 不发布聚合根项目、demo artifact 或 CLI fat jar。
  6. 确认 Maven settings.xml 里存在 Central server id,且密钥不进仓库。
  7. 确认 GPG agent / Kleopatra 可以完成签名。

本地验证​

mvn -DskipTests package
mvn -P release -DskipTests clean verify

如果修改 docs-site:

npm --prefix docs-site ci
npm --prefix docs-site run build

发布​

mvn -P release -DskipTests clean deploy

记录 Central deployment id。若 Central 返回 validated 但要求手动发布,在 Sonatype Central Portal 或 Publisher API 中发布该 deployment。

注意:mvn deploy 即使验证失败也会计入 Sonatype 月度 Release Count / File Count / Release Size 配额;失败先去 Central Portal 查清原因,不要盲目重跑。

CLI fat jar 分发​

ai4j-cli-<version>-jar-with-dependencies.jar 不上 Central(release profile 中 ai4j.cli.assembly.skip=true),作为 GitHub Release asset 分发,install.sh / install.ps1 从这里下载。在创建 GitHub tag / Release 之后执行:

mvn -pl ai4j-cli -am -DskipTests package   # 不带 release profile,产出 fat jar
gh release upload v<version> ai4j-cli/target/ai4j-cli-<version>-jar-with-dependencies.jar

发布后验证​

  1. Maven Central deployment 状态为 PUBLISHED。
  2. maven-metadata.xml 的 latest 和 release 等于本次版本。
  3. 主模块的 pom、jar、sources、javadoc 和 .asc 可下载。
  4. ai4j-cli-<version>-jar-with-dependencies.jar 不出现在 Central,但作为 asset 出现在 GitHub Release 上(gh release view v<version> 可见)。
  5. 创建 GitHub tag / Release,说明版本变化和 Maven 坐标,并上传 fat jar asset(见上节)。
  6. 新分支把所有 Maven POM bump 到下一个 SNAPSHOT 并合回 main。

收口​

  • 删除已合并 release / bump 分支。
  • 确认本地 main 与 origin/main 对齐。
  • HA task 记录 deployment id、GitHub release URL、验证命令和残余风险。