Skip to main content

Release Checklist

This page is the minimal checklist maintainers follow before and after publishing AI4J to Maven Central and GitHub Release.

Version strategy​

AI4J currently uses uniform versioning across all modules:

  • Release version: all release modules use the same stable version, e.g. 2.4.2
  • Development branch: all Maven POMs use the next SNAPSHOT, e.g. 2.4.3-SNAPSHOT
  • README / docs examples: write the latest released stable version, never a SNAPSHOT

When you only change the README, docs-site, or a demo, no new Maven version is required.

Pre-release​

  1. Confirm the current branch is clean and cut a release fix branch from main.
  2. Bump all Maven POMs from *-SNAPSHOT to the same release version.
  3. Sync the user-facing install version in README, README-EN, and docs-site.
  4. Confirm ai4j-bom covers the release modules that need to align.
  5. Confirm the release profile does not publish the aggregation root project, demo artifacts, or the CLI fat jar.
  6. Confirm Maven settings.xml contains the Central server id, and the secret stays out of the repo.
  7. Confirm GPG agent / Kleopatra can complete signing.

Local verification​

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

If you modified docs-site:

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

Release​

mvn -P release -DskipTests clean deploy

Record the Central deployment id. If Central returns validated but requires manual publishing, publish that deployment from the Sonatype Central Portal or the Publisher API.

Note: a failed mvn deploy still counts toward Sonatype's monthly Release Count / File Count / Release Size quotas; investigate validation errors in the Central Portal before rerunning.

CLI fat jar distribution​

ai4j-cli-<version>-jar-with-dependencies.jar is not published to Central (ai4j.cli.assembly.skip=true in the release profile); it ships as a GitHub Release asset that install.sh / install.ps1 download. Run this after creating the GitHub tag / Release:

mvn -pl ai4j-cli -am -DskipTests package   # without the release profile, produces the fat jar
gh release upload v<version> ai4j-cli/target/ai4j-cli-<version>-jar-with-dependencies.jar

Post-release verification​

  1. Maven Central deployment status is PUBLISHED.
  2. maven-metadata.xml latest and release equal this version.
  3. The main module's pom, jar, sources, javadoc, and .asc are downloadable.
  4. ai4j-cli-<version>-jar-with-dependencies.jar is absent from Central but present as a GitHub Release asset (visible via gh release view v<version>).
  5. Create a GitHub tag / Release describing the version changes and Maven coordinates, and upload the fat jar asset (see above).
  6. On a new branch, bump all Maven POMs to the next SNAPSHOT and merge it back to main.

Wrap-up​

  • Delete the merged release / bump branches.
  • Confirm local main aligns with origin/main.
  • Record the deployment id, GitHub release URL, verification commands, and residual risks in the HA task.