Generated Modules
Every module contains a full src/ scaffold
(src/main/java, src/main/resources, src/test/java, src/test/resources)
and a package-info.java in every applicable leaf package directory.
Fixed Modules
These modules are always generated regardless of input.
common-domain- Domain classes shared across all other modules. No dependencies on other generated modules.
Package:
{base.package}.common.domain common-testing- Shared test utilities. Has no test-scope Java packages.
Package:
{base.package}.common.testing
Depends on:common-domain serviceorservice-{name}- Business logic for a service area (see the
serviceAreasprompt).Package:
{base.package}.serviceor{base.package}.service.{name}
Depends on:common-domain app- Application assembly — produces the runnable artifact (e.g. Spring Boot über-jar).
Package:
{base.package}.app
Depends on: all non-test modules (common-domain, all domain and integration modules, all service modules, all presentation modules) acceptance-tests- Functional acceptance tests that exercise the application from the outside.
Has no main-scope Java packages.
Package:
{base.package}.at
Depends on:app,common-domain, alldomain-{type}-{name}integration domain modules, alldomain-{type}presentation domain modules
Plugin:maven-failsafe-plugin(integration-test+verifygoals)
Integration Modules
Generated per type:name pair in the integrations prompt.
The database type is abbreviated to db in all names.
domain-{type}-{name}- Domain classes for a specific integration (e.g.
domain-db-users,domain-rest-orders).Package:
{base.package}.domain.{type}.{name}
Depends on:common-domain integration-{type}-{name}- Integration implementation classes — DAOs, Spring Data JPA repositories, REST clients, etc.
(e.g.
integration-db-users,integration-rest-orders).Package:
{base.package}.integration.{type}.{name}
Depends on:common-domain,domain-{type}-{name}
Plugin:maven-failsafe-plugin(integration-test+verifygoals)
Presentation Modules
Generated per type in the presentationTypes prompt.
domain-{type}- Domain classes for a presentation tier (e.g.
domain-rest,domain-graphql).Package:
{base.package}.domain.{type}
Depends on:common-domain presentation-{type}- Request-handling classes — controllers, resolvers, etc.
(e.g.
presentation-rest,presentation-graphql).Package:
{base.package}.presentation.{type}
Depends on:common-domain,domain-{type}
Parent POM
parent/pom.xml is the aggregator and BOM for all sibling modules.
There is no pom.xml at the project root — parent/ is a sibling of all other modules.
It contains:
<packaging>pom</packaging><modules>— all sibling modules referenced as../modulerelative paths, sorted alphabetically<dependencyManagement>— all modules pinned to${project.version}, sorted alphabetically byartifactId- Common properties: Java 21 via
maven.compiler.release; UTF-8 source encoding <pluginManagement>— pinned versions formaven-compiler-plugin,maven-failsafe-plugin,maven-jar-plugin(withskipIfEmpty=true), andmaven-surefire-plugin
To build a generated project:
cd my-service/parent
mvn verifyUse mvn install instead if other local projects need to consume the generated modules from your local Maven repository.
Package Reference
All type and name segments in package names are lowercased.
| Module | Package |
|---|---|
common-domain |
{base.package}.common.domain |
common-testing |
{base.package}.common.testing |
domain-{type}-{name} |
{base.package}.domain.{type}.{name} |
integration-{type}-{name} |
{base.package}.integration.{type}.{name} |
service |
{base.package}.service |
service-{name} |
{base.package}.service.{name} |
domain-{type} |
{base.package}.domain.{type} |
presentation-{type} |
{base.package}.presentation.{type} |
app |
{base.package}.app |
acceptance-tests |
{base.package}.at |
