Class IkeReleaseCascadeMojo
- All Implemented Interfaces:
org.apache.maven.api.plugin.Mojo
The cascade is decentralized (#420): each foundation repo
version-controls its own src/main/cascade/release-cascade.yaml
declaring only its own edges. This goal reads the local repo's
manifest, walks the edges into the sibling checkouts to assemble
the full ordered graph, and runs ike:release-publish on
every release-pending member in topological order. Each member's
Nexus deploy completes before the next (which
ike:release-publish aligns to its upstreams via
alignUpstreamProperties, #419-B) begins.
A member is release-pending when either:
- it has at least one non-release-cadence commit since its
latest
v*tag (substantive change), OR - at least one of its upstream's
${X.version}property pin in the local POM is older than that upstream's latest released tag (stale upstream pin, #468).
The walk is a single full-graph topological sweep, not a single-source downstream walk: from any starting node the assembler reaches every connected member, and every release-pending node releases exactly once even when the graph has multiple heads that converge on a shared terminal (#468). The walker is idempotent — re-running with no release-pending nodes is a no-op — and crash-safe — re-running after a partial cascade re-evaluates the release-pending set and picks up from the first unfinished member.
This is the ike:-tier cascade executor. The foundation
repos cannot form a workspace — ike-workspace-maven-plugin
lives in ike-platform — so the foundation must release with
ike:-tier tooling only.
Repo resolution is local: every cascade member is expected to be
checked out as a sibling directory alongside the repo this goal runs
in (override the containing directory with
-Dike.release.cascade.basedir). A member with no checkout is
a hard error — the cascade cannot release what it cannot see.
Usage:
mvn ike:release-cascade # release the cascade mvn ike:release-cascade -DpushRelease=false # local-only dry of each mvn ike:release-cascade -Dike.release.cascade.basedir=/path/to/checkouts
-
Constructor Summary
Constructors -
Method Summary
Methods inherited from class AbstractGoalMojo
execute, getLog, getPrompter, getSession
-
Constructor Details
-
IkeReleaseCascadeMojo
public IkeReleaseCascadeMojo()Creates this goal instance.
-
-
Method Details
-
runGoal
- Specified by:
runGoalin classAbstractGoalMojo- Throws:
org.apache.maven.api.plugin.MojoException
-