Setup Java Spring Boot Poms
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
Generates the whole Maven reactor for a DDD/hexagonal Spring Boot service: the root pom.xml that holds every
dependency and plugin version, one pom.xml per module, and the shared static-analysis configuration those poms
reference.
Purpose
iru-setup-java-springboot-pom exists to make the hexagonal architecture enforceable by the build rather than by
convention. Two rules govern everything it writes:
-
Every version lives in the root
pom.xml. Module poms declaregroupId/artifactIdonly, resolving through the root’sdependencyManagementandpluginManagement. A<version>in a module pom is treated as a defect, and the skill’s own verification step grepsmvn dependency:treeoutput for exactly that. -
Starter and driver artifact names come from the Spring Initializr reference pom, never from memory, because they change across Boot major versions.
It enforces Java 21 through maven.compiler.release, java.version, and a maven-enforcer-plugin
requireJavaVersion [21,) rule, and enforces the module dependency direction through a per-module
bannedDependencies rule — domain may not see Spring or any outer module, application may not see
infrastructure or api, no infrastructure module may see a sibling, and api may not see infrastructure.
boot is the composition root and bans nothing.
The full report/quality plugin set is wired with generated sources excluded from every analysis: Javadoc,
Checkstyle, PMD, SpotBugs, Surefire (unit, *Test), Failsafe (integration, *IT), JaCoCo per module plus a
report-aggregate in a dedicated coverage module, JXR for cross-referenced source, Maven Site as the
aggregator, groovy-maven-plugin writing build-info.properties into boot, and sonar-maven-plugin.
Inputs
| Argument | Required | Description | Default |
|---|---|---|---|
|
No |
|
|
|
No |
|
Fetched fresh from |
Existing root |
No |
If a root |
None — user must choose |
Outputs
-
Root
pom.xml— the Spring Boot parent, the module list, all version properties, every BOM import copied from the reference pom,dependencyManagementfor the project’s own modules, project-wide dependencies, and the full build/reporting plugin configuration.pluginManagementalso version-manages the code and documentation generators that Setup Java Spring Boot APIs wires into individual modules — the OpenAPI, protobuf, GraphQL-codegen and AVRO plugins, plusfrontend-maven-pluginfor the AsyncAPI documentation generators — along with theasyncapi.docs.skipproperty that lets an offline build opt out of the npm-based documentation step. The GraphQL codegen version is shared with thegraphql-java-codegenruntime artifact that generated GraphQL client code extends, so the two cannot drift apart. -
One
pom.xmlper module named in the manifest, plus the intermediate aggregator poms (infrastructure/,infrastructure/database/,infrastructure/clients/,api/). Eachinfrastructure/clients/<name>additionally carries, attestscope, the Testcontainers module for whichever API mockstack.apiMocknames, so that module’s own*ITcan start just the mock instead of the whole compose stack. -
coverage/pom.xml— JaCoCoreport-aggregateacross every module, declared last in the reactor so every module’s execution data already exists when it runs. -
boot/pom.xml— additionally carryingspring-boot-maven-pluginand thegroovy-maven-pluginbuild-info step. -
checkstyle.xmlandspotbugs-exclude.xmlat the repository root, if absent. -
A report listing the reactor’s build order, every version pinned (separating those copied from the reference pom from those looked up on Maven Central), which module each significant dependency landed in, anything that couldn’t be placed, and any hexagon violation found.
Execution flow
Dependencies
Invokes
None directly. It reads springboot-stack.yml and the Spring Initializr API, and writes poms.
Invoked by
-
Setup Java Spring Boot — Step 8, first of seven sub-skills, via the
iru-isolated-skill-executoragent. It is the one sub-skill whose failure stops the whole bootstrap: without a root pom there is no reactor for anything else to attach to.
Also runs standalone (/iru-setup-java-springboot-pom) to regenerate the reactor from an updated manifest.
Related agents
-
iru-gate-runner— spawned for Step 6’s Maven verification, since a multi-modulevalidateplus a fulldependency:treeis exactly the kind of output that shouldn’t land in the caller’s context.
Source
SKILL.md on GitHub — the file this page was generated from.