IKE Workspace Extension
IKE Workspace Extension 9
- Documentation Overview
- Reports Project Information 10
IKE Workspace Extension
network.ike.tooling:ike-workspace-extension is a Maven 4 build extension that prunes non-existent <subprojects> entries from IKE workspace POMs before model validation. Lets a fresh clone of any IKE workspace bootstrap with mvn ws:scaffold-init even when no subproject directory is on disk yet.
What it does
When Maven 4 reads a workspace POM declaring several subprojects but the working tree only has the workspace root (because the operator just ran git clone and has not yet populated subprojects), Maven’s model validator fatally aborts the build with "Child subproject X does not exist" — before any goal can run. That makes the documented bootstrap (git clone && cd && mvn ws:scaffold-init) impossible. See IKE-Network/ike-issues#459[2].
This extension implements org.apache.maven.api.spi.ModelTransformer.transformFileModel, which fires before profile activation and subproject existence validation. For any POM whose directory has a sibling workspace.yaml (the "this is a workspace POM" marker), the transformer:
- Removes
<subprojects>entries whose<sub>/pom.xmldoes not exist on disk. - Removes file-activated profiles whose
<file><exists>target is missing — so any-P?with-Xflag on the command line silently no-ops on the missing profile name.
Every other POM passes through untouched.
Stability commitment
This artifact does exactly one thing and never grows. The dependency surface stays at the Maven 4 API jars (compile scope, loaded into the extension classloader). No ike-* runtime dependencies, no business logic, no knowledge of IKE conventions beyond "sibling workspace.yaml marks a workspace POM."
Versioned independently of the ike-platform[3] release cadence. If we ever need different behavior, we add a separate extension rather than evolving this one.
Wiring
Declared in a workspace’s .mvn/extensions.xml:
<extensions>
<extension>
<groupId>network.ike.tooling</groupId>
<artifactId>ike-workspace-extension</artifactId>
<version>1</version>
</extension>
</extensions>
The ike-platform workspace plugin’s ws:scaffold-init writes this entry into new workspaces automatically; ws:scaffold-publish keeps it in sync on existing workspaces. The version is sourced from a property declared in ike-parent — operators do not maintain it by hand.
Coordinates
<dependency>
<groupId>network.ike.tooling</groupId>
<artifactId>ike-workspace-extension</artifactId>
<version>1</version>
</dependency>
Available from Maven Central.
Tracking
- IKE-Network/ike-issues#460[4] — productionization plan
- IKE-Network/ike-issues#459[2] — underlying defect this extension fixes