You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(arch): Add appName property and expand Spring/testing wiring
Implements the java-service-archetype Needed Changes spec: every generated
project now needs a human-readable name driving its class/property/prose
naming, richer SQL-logging and Spring Boot Admin observability, and shared
REST/GraphQL acceptance-test infrastructure, instead of hand-rolling these
per project after generation.
* Add required appName property (no default, prompted first) with class-name,
property-value, and prose transform rules
* Generate package-info.java only under src/main/java (Java rejects two files
compiled for the same package); acceptance-tests' lone one now describes the
functional tests themselves
* Add datasource-proxy-spring-boot-starter (SQL logging) to database integration
modules and acceptance-tests; add spring-boot-admin-starter-client and make
app's web/actuator stack unconditional regardless of presentationTypes
* Generate shared RestAcceptanceTestBase/GraphQlAcceptanceTestBase in
common-testing, and per-project AppRestAcceptanceTestBase/
AppGraphQlAcceptanceTestBase, {appName}AcceptanceTestConfiguration, and
logback-spring.xml in acceptance-tests
* Add appName-derived <name>/<description> and dependency-comment labels
(spring/this app/sql logging) across parent, app, service, domain-service,
domain-rest/graphql, presentation-graphql, and common-testing poms
* common-testing now depends on every domain module; no domain module depends
on common-testing, keeping the reactor acyclic
* Update all 16 archetype ITs, the interactive test scripts, and the site docs
(requirements/modules/usage/index/building.adoc) plus CLAUDE.md to match
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P76PdSVUG6SNJeXcGPrhyn
Generated per type in the `presentationTypes` prompt.
96
163
97
164
`domain-{type}`::
98
-
Domain classes for a presentation tier (e.g. `domain-rest`, `domain-graphql`).
165
+
Domain classes for a presentation tier (e.g. `domain-rest`, `domain-graphql`) — these map
166
+
to/from the service-tier domain objects ("the service domain deps").
99
167
+
100
168
_Package_: `{base.package}.domain.{type}` +
101
-
_Depends on_: `common-domain`
169
+
_Depends on_: `common-domain`, every `domain-service`/`domain-service-{name}` module; if
170
+
`includeSpring=true`, also `spring-boot-starter-validation`
102
171
103
172
`presentation-{type}`::
104
173
Request-handling classes — controllers, resolvers, etc.
@@ -116,10 +185,13 @@ It contains:
116
185
117
186
* `<parent>` — inherits `spring-boot-starter-parent` (4.1.0) via an empty `<relativePath/>`, supplying Spring dependency management and plugin defaults
118
187
* `<packaging>pom</packaging>`
188
+
* `<name>`/`<description>` derived from `appName` (see <<appname-naming>>)
119
189
* `<modules>` — all sibling modules referenced as `../module` relative paths, sorted alphabetically
120
190
* `<dependencyManagement>` — every module pinned to `${project.version}`, split into a TEST section
121
191
(`acceptance-tests` and `common-testing`, at `<scope>test</scope>`) and a PROD section (all other
122
-
modules, plus managed third-party dependencies such as `spring-core`)
192
+
modules, plus managed third-party dependencies such as `spring-core`, `datasource-proxy-spring-boot-starter`,
193
+
and `spring-boot-admin-starter-client` — the latter two pinned via their own version properties
194
+
since they aren't part of the Spring Boot BOM)
123
195
* Common properties: Java 21 via `maven.compiler.release`; UTF-8 source encoding
124
196
* `<pluginManagement>` — pinned versions for `maven-compiler-plugin`, `maven-failsafe-plugin`,
0 commit comments