The maintainer-facing release procedure is centralized in the workspace repo:
../../workspace/workflows/release-process.md.
This repo-specific supplement applies here — srcmorph is a 3-module Maven reactor
(srcmorph, srcmorph-cli, srcmorph-maven-plugin, all released together from one parent pom
at the same version), not a single-module project, so a few steps differ from the generic
procedure:
-
Bump to the release version before tagging:
mvn versions:set -DnewVersion=X.Y.Z -DgenerateBackupPoms=false
(No
-Dexcludesneeded — the reactor's former 4th module, a relocation-stub POM for the retirednet.ladenthin:llamacpp-ai-index-maven-plugincoordinates, was removed after its one1.0.4release; seeCLAUDE.md.)versions:setrewrites only the poms. These version literals are hand-maintained and must be bumped in the same commit, or the published docs point consumers at the previous release:README.md— the<dependency>/<plugin>snippets and the "Current reactor version / Last released version" line;srcmorph-maven-plugin/README.md— its own<plugin>snippet;CLAUDE.md— the reactor version and "Last released version" in the overview and layout blocks;SECURITY.md— the supported-release-line table;CHANGELOG.md— the## [X.Y.Z] - <date>heading and the two link refs at the bottom.
grep -rn "<previous version>" --include="*.md" .finds what was missed; run it before tagging, not after. -
Commit, push, merge to
main. -
Tag the merge commit and push the tag:
git tag vX.Y.Z <merge-commit-sha> git push origin vX.Y.Z
-
Manually trigger the release: GitHub → Actions → Publish → Run workflow, select the
vX.Y.Ztag, and checkpublish_to_central.publish-releaseonly runs when both the ref is av*tag and the workflow was dispatched with that flag — a plain tag push or a push tomainalone does not publish anything. -
Verify the release actually reached Central before considering it done: check
https://repo1.maven.org/maven2/net/ladenthin/<artifact>/X.Y.Z/for each of the four artifacts —srcmorph-parent,srcmorph,srcmorph-cli,srcmorph-maven-plugin; the parent POM is easy to forget precisely because it carries no code, and a consumer who cannot resolve it cannot resolve any of the other three — and confirm the CI run's "Deploy release" step succeeded (not just "completed"). -
Bump
mainforward to the next-SNAPSHOTversion (sameversions:setcommand) somainnever again sits at a version matching a published release.
See CHANGELOG.md for the format of the release notes entry that should exist for X.Y.Z before
tagging.