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): Wire presentation->services and service->integrations; refine pom output
- Each presentation module now depends on all service modules.
- Each named service area depends on the integration module sharing its
name; the single default 'service' module depends on every integration
module.
(New IT test service-integration-match covers the name-match path.)
- domain-service modules describe "the service tier" (with the area name
when named) rather than "the application", in both pom description and
package-info.
- presentation-graphql uses "Resolver" wording (pom description and
main/test package-info) instead of "Request-handling".
- acceptance-tests and common-testing are managed in the parent
dependencyManagement TEST section with <scope>test</scope>.
- Generated poms put a blank line between <dependencies> and <build>.
Verify scripts updated for the reordered dependencyManagement (now a set
comparison) and for the new wiring and wording.
Document presentation/service wiring and DM test scope in modules.adoc.
Presentation modules depend on all service modules; service
modules depend on their matching integration(s) (default 'service' on
all); dependencyManagement splits acceptance-tests/common-testing into a
test-scoped TEST section.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01McmUDzyMrkYpbyeU5UWrot
_Depends on_: `common-domain`, `domain-{type}`, and all service modules
107
109
108
110
== Parent POM
109
111
@@ -115,7 +117,9 @@ It contains:
115
117
* `<parent>` — inherits `spring-boot-starter-parent` (4.1.0) via an empty `<relativePath/>`, supplying Spring dependency management and plugin defaults
116
118
* `<packaging>pom</packaging>`
117
119
* `<modules>` — all sibling modules referenced as `../module` relative paths, sorted alphabetically
118
-
* `<dependencyManagement>` — all modules pinned to `${project.version}`, sorted alphabetically by `artifactId`
120
+
* `<dependencyManagement>` — every module pinned to `${project.version}`, split into a TEST section
121
+
(`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`)
119
123
* Common properties: Java 21 via `maven.compiler.release`; UTF-8 source encoding
120
124
* `<pluginManagement>` — pinned versions for `maven-compiler-plugin`, `maven-failsafe-plugin`,
assert!text("${svc}/pom.xml").contains('<artifactId>integration-') :"#2: ${svc} must not take a non-matching integration"
332
+
}
333
+
334
+
// #4: domain-service-* describe the service tier (with the area name), not "the application"
335
+
assert text('domain-service-orders/pom.xml').contains('<description>Domain classes for the orders service tier.</description>') :'#4: domain-service-orders pom description'
336
+
assert text("domain-service-orders/src/main/java/${p}/domain/service/orders/package-info.java").contains('Domain classes for the orders service tier.') :'#4: domain-service-orders package-info'
337
+
338
+
// #5: acceptance-tests and common-testing are managed in dependencyManagement at test scope
339
+
['acceptance-tests', 'common-testing'].each { m->
340
+
assert dmBlock =~/(?s)<artifactId>${aid}-${m}<\/artifactId>\s*<version>[^<]+<\/version>\s*<scope>test<\/scope>/:"#5: ${m} must be managed at <scope>test</scope>"
341
+
}
342
+
343
+
// #7: GraphQL presentation uses resolver wording, not request-handling
344
+
assert text('presentation-graphql/pom.xml').contains('<description>Resolver classes for the GraphQL presentation tier.</description>') :'#7: presentation-graphql pom description'
345
+
assert text("presentation-graphql/src/main/java/${p}/presentation/graphql/package-info.java").contains('Resolver classes for the GraphQL presentation tier.') :'#7: presentation-graphql main package-info'
346
+
assert text("presentation-graphql/src/test/java/${p}/presentation/graphql/package-info.java").contains('resolver classes for the GraphQL presentation tier.') :'#7: presentation-graphql test package-info'
347
+
assert!text('presentation-graphql/pom.xml').contains('Request-handling') :'#7: presentation-graphql must not use request-handling wording'
0 commit comments