Skip to content

Commit 1060ab9

Browse files
committed
fixup! docs: Add requirements
1 parent 9f42154 commit 1060ab9

1 file changed

Lines changed: 22 additions & 8 deletions

File tree

src/site/asciidoc/requirements.adoc

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

102103
Business 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

117123
Assembles the runnable artifact (e.g. Spring Boot uber jar).
118124
Depend 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

123133
Functional 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

134144
Each 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.
137149
The 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

Comments
 (0)