Class ReactorSubprojectsReconciler
- All Implemented Interfaces:
Reconciler
workspace.yaml, and migrates the
legacy with-<name> file-activated profile pattern to
unconditional top-level <subprojects> entries
(IKE-Network/ike-issues#696, completing #460).
Before this reconciler, the only path that added a member to the
reactor POM was ws:add, one profile at a time. A subproject
that entered workspace.yaml by any other route — feature-finish
YAML reconciliation, bulk import, a hand edit — silently dropped out of
the reactor, and IntelliJ (which imports the workspace root) never saw
it. There was no convergence step to catch the drift.
Each ws:scaffold-{draft,publish} run now converges the
reactor POM to:
- a top-level
<subprojects>block listing exactly theworkspace.yamlkeys, in declaration order — adding the missing, removing the stale; and - zero
with-*subproject profiles — every one is retired, its member already declared top-level.
Top-level declarations are safe even for not-yet-cloned subprojects:
ike-workspace-extension's SubprojectPruneTransformer
prunes entries whose directory is absent at model-read time (#460).
Pure normalization — no version bumps, no clones. detect
reports the convergence; apply performs it. Idempotent: a second
run is a no-op. Opt out with -DupdateReactor=false.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidapply(WorkspaceContext ctx) Apply reconciliation.detect(WorkspaceContext ctx) Inspect the workspace and report any drift this reconciler would correct.Human-readable name of the dimension this reconciler owns.The Maven property name (without the-Dprefix) that opts out of this reconciler's apply pass.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Reconciler
pinFlag
-
Constructor Details
-
ReactorSubprojectsReconciler
public ReactorSubprojectsReconciler()Creates the reconciler.
-
-
Method Details
-
dimension
Description copied from interface:ReconcilerHuman-readable name of the dimension this reconciler owns. Used as the heading inscaffold-draftoutput.- Specified by:
dimensionin interfaceReconciler- Returns:
- the dimension label, e.g. "Denormalized YAML fields"
-
optOutFlag
Description copied from interface:ReconcilerThe Maven property name (without the-Dprefix) that opts out of this reconciler's apply pass. Setting the property to"false"skips this dimension on a givenscaffold-publishinvocation.- Specified by:
optOutFlagin interfaceReconciler- Returns:
- the opt-out flag name, e.g.
"updateFields"
-
detect
Description copied from interface:ReconcilerInspect the workspace and report any drift this reconciler would correct. Read-only — must not mutate the workspace.- Specified by:
detectin interfaceReconciler- Parameters:
ctx- the workspace context- Returns:
- drift report;
DriftReport.noDrift(String)if nothing to do
-
apply
Description copied from interface:ReconcilerApply reconciliation. Caller is responsible for checkingReconcilerOptions.isOptedOut(String)before invoking; implementations may also re-check defensively.- Specified by:
applyin interfaceReconciler- Parameters:
ctx- the workspace context
-