IKE Maven Plugin Support

ike-maven-plugin-support is the shared library of helper classes used by the IKE Maven plugins (ike-maven-plugin and ike-workspace-maven-plugin). It’s not a plugin itself — it has no mojos. It exists to keep the two plugins consistent without one plugin depending on the other.

Coordinate Value
Group ID network.ike.tooling
Artifact ID ike-maven-plugin-support
Packaging jar

Why a separate module

ike-maven-plugin and ike-workspace-maven-plugin need shared code for:

  • Consistent goal-result reporting (the per-goal markdown reports).
  • Shared parameter parsing and validation.
  • The compile-time goal registry that catches mojo / enum drift.
  • Released-version resolution — discovering the latest released version of an artifact (used by the scaffold foundation bake in both plugins).

Having one plugin depend on the other would create an awkward release-order constraint and a circular conceptual reference. Pulling the shared code into a third library keeps the dependency direction clean: both plugins depend on ike-maven-plugin-support, which depends on neither.

Key classes

Class Role
AbstractGoalMojo Base class for any mojo that produces a per-goal markdown report. Centralizes the report-write path and the file-naming convention (<goal-name>.md).
GoalReport Builder for the structured markdown reports goals emit. Sections, tables, callouts.
GoalRef Type-safe reference to a goal (rather than a string literal). Lets the compiler catch typo’d goal names in @see and similar references.
MojoParamSupport Shared parameter parsing — coercion of -Dprop=val strings into typed values, with consistent error messages on bad input.
support.version.* Released-version resolution: CandidateVersionResolver, SessionCandidateVersionResolver, MavenVersionComparator, VersionResolverFailureException. Used by the scaffold foundation bake in both plugins.

The goal registry pattern

Both ike-maven-plugin and ike-workspace-maven-plugin declare their goals twice: once as a @Mojo-annotated class (the implementation) and once as an entry in a corresponding IkeGoal or WsGoal enum (the catalog). A custom annotation processor checks at compile time that every mojo has a matching enum entry — so the help output, the markdown report filenames, and the goal implementations cannot drift apart.

ike-maven-plugin-support provides the supporting types (GoalRef, base mojo class, report writer) that make this pattern work uniformly across both plugins.

Searching...
No results.