@@ -55,6 +55,8 @@ Do not create a `pom.xml` at the project root.
5555 sorted alphabetically.
5656* List every sibling module in `<dependencyManagement>` pinned to
5757 `${project.version}`, sorted alphabetically by `artifactId`.
58+ * Import the `spring-boot-dependencies` BOM in `<dependencyManagement>` (managed via a
59+ `spring-boot.version` property) so Spring artifact versions are centrally managed.
5860* Properties: Java 21 via `maven.compiler.release`; UTF-8 source encoding via
5961 `project.build.sourceEncoding`.
6062* `<pluginManagement>` — declare pinned versions for `maven-compiler-plugin`,
@@ -80,10 +82,9 @@ Shared domain classes. No dependencies on other generated modules.
8082
8183=== `common-testing`
8284
83- Shared test utilities .
85+ Shared test infrastructure .
8486
8587* Dependency: `common-domain`
86- * No test-scope Java packages (the `src/test/java` directory is created but contains no source files).
8788
8889=== Per integration: `domain-{type}-{name}` and `integration-{type}-{name}`
8990
@@ -100,7 +101,12 @@ For each `type:name` integration entry, generate two modules
100101=== Per service area: `service` or `service-{name}`
101102
102103Business logic for a service area.
103- Dependency: `common-domain`.
104+ Dependencies: `common-domain` and the area's own `domain-service` /
105+ `domain-service-{name}` module.
106+
107+ For each service area, also generate a `domain-service` (single service) or
108+ `domain-service-{name}` module holding that area's domain classes
109+ (dependency: `common-domain`).
104110
105111=== Per presentation tier: `domain-{type}` and `presentation-{type}`
106112
@@ -116,24 +122,30 @@ For each presentation type, generate two modules
116122
117123Assembles the runnable artifact (e.g. Spring Boot uber jar).
118124Depend on all generated modules except `acceptance-tests`, `common-testing`,
119- and `app` itself.
125+ and `app` itself, plus `spring-boot-starter-web` and `spring-boot-starter-jdbc`.
126+ Contains the Spring Boot `Application` (`@SpringBootApplication`,
127+ `@EnableTransactionManagement`) and `AppServletInitializer` (WAR deployment)
128+ classes in the `.config` sub-package. `Application` `@Import`s the `@Configuration`
129+ class that every app-composed module carries in its own `.config` sub-package.
120130
121131=== `acceptance-tests`
122132
123133Functional tests that exercise the application end-to-end.
124- No main-scope Java packages (the `src/main/java` directory is created but contains no source files).
125134
126135* Dependencies: `app`, `common-domain`, all `domain-{type}-{name}` modules,
136+ all `domain-service` / `domain-service-{name}` modules,
127137 all `domain-{type}` (presentation) modules.
128- * Do not depend on service modules or integration implementation modules.
138+ * Do not depend on service (business-logic) modules or integration implementation modules.
129139* Configure `maven-failsafe-plugin` with the `integration-test` and `verify` goals.
130140
131141[[source-structure]]
132142== Source Structure
133143
134144Each module's source root is the package derived from the base package prompt.
135- Place a `package-info.java` in each leaf package directory with a Javadoc comment
136- describing the package's purpose.
145+ Place a `package-info.java` in each module's primary leaf package under both
146+ `src/main/java` and `src/test/java`, with a Javadoc comment describing the package's
147+ purpose; the test-side comment is prefixed with "Tests for ...". Each app-composed
148+ module additionally carries a `@Configuration` class in a `.config` sub-package.
137149The package for each module is:
138150
139151[cols="1,1"]
@@ -146,6 +158,8 @@ The package for each module is:
146158|`integration-{type}-{name}` |`${base.package}.integration.{type}.{name}`
147159|`service` |`${base.package}.service`
148160|`service-{name}` |`${base.package}.service.{name}`
161+ |`domain-service` |`${base.package}.domain.service`
162+ |`domain-service-{name}` |`${base.package}.domain.service.{name}`
149163|`domain-{type}` |`${base.package}.domain.{type}`
150164|`presentation-{type}` |`${base.package}.presentation.{type}`
151165|`app` |`${base.package}.app`
0 commit comments