Summary
This issue tracks aligning Ensono stacks-java-* repositories with the canonical parent POM maintained in this repository (stacks-java-module-parent). The goal is to ensure a consistent parent POM across active Java modules, using version v3.0.66 (latest as of 2025-09-15), and to skip archived/sample repositories.
Why: a single maintained parent POM centralizes dependency management, plugin configuration, security patches and CI conventions (OWASP, fmt, checkstyle, spotbugs, jacoco, etc.). Some repositories still reference the older groupId com.amido.stacks.modules or use other parents (for example spring-boot-starter-parent).
Target parent coordinates to apply in child POMs:
<parent>
<groupId>com.ensono.stacks.modules</groupId>
<artifactId>stacks-modules-parent</artifactId>
<version>3.0.94</version>
</parent>
Current state (summary)
- Repos scanned: all
stacks-java-* in the Ensono org (18 matches).
- Many active Java modules already declare
<parent> with artifactId stacks-modules-parent but several point at the older groupId com.amido.stacks.modules and different versions.
- Some sample and archived repos do not contain a usable
pom.xml at the root or are archived and should be skipped.
- A few projects (demo/sample or Micronaut demos) intentionally do not consume the parent and should be reviewed before changing.
Scope & exclusions
- Scope: active repositories whose names start with
stacks-java- containing Java modules intended to be part of the Stacks family. We'll modify module POMs that are under active maintenance.
- Exclusions: archived repositories, sample/demo-only repos, and projects whose intent is to remain independent (e.g., Micronaut demo) unless a maintainer requests adoption.
Acceptance criteria
- Active Java modules that are part of Stacks use the parent POM with groupId
com.ensono.stacks.modules, artifactId stacks-modules-parent, version 3.0.94.
- CI builds in a feature branch pass (at minimum
mvn -DskipTests verify or the repo's existing CI) for each updated repo.
- PRs are opened for each repository with clear description and QA instructions.
Action plan (checklist)
References
- This repository (parent POM) — reference parent POM and its
owasp-dependency-check profile and other shared build configuration: pom.xml in this repo.
- Org code search results for
stacks-modules-parent (examples pulled from multiple repos): many java/pom.xml files reference the artifactId stacks-modules-parent with groupId com.amido.stacks.modules or com.ensono.stacks.modules.
- Rationale: consistent dependency management and plugin versions (fmt, spotbugs, checkstyle, OWASP dependency-check) reduces drift and security risk.
Security impact
- Standardizing on the parent POM centralizes the versions of security-sensitive plugins and libraries (for example, Gson, Netty, OWASP plugin versions). This helps apply timely security updates across modules.
Notes and caveats
- Some repositories intentionally use
spring-boot-starter-parent or other special parents; changing the parent may require merging plugin config (for spring-boot-maven-plugin settings) into the stacks parent or a custom child configuration. Treat these on a case-by-case basis.
- For multi-module repos, be careful to update module POMs not aggregator-only POMs unless intended.
If you'd like, I can prepare the pilot script and open PRs for a small batch of repos (2–3) so you can review the pattern before wider rollout. Please confirm:
- The target version to apply:
3.0.94 (confirmed)
- Whether to skip archived/sample repos: yes, skip them
- If you want me to open PRs or just produce patch files for manual review: choose one
This document tracks the stacks-java-* repositories discovered in the Ensono organization during the repo inventory run. It records where a pom.xml was found (root or java/pom.xml), whether the child POM references stacks-modules-parent, and notes about groupId (com.ensono vs com.amido), archived/sample status, or missing files.
Notes:
- Target parent:
com.ensono.stacks.modules:stacks-modules-parent:3.0.94
- "References parent" means the child POM contains a
<parent> block with artifactId stacks-modules-parent.
- Where possible links point to the file path used during the inspection (downloaded from GitHub during the session).
Inventory (observed repos)
-
stacks-java-module-parent
- Path inspected:
pom.xml (this repo)
- Notes: canonical parent POM (source of truth). Contains OWASP dependency-check profile.
-
stacks-java-core-commons
- Path inspected:
java/pom.xml
- References parent: yes
- groupId observed:
com.ensono.stacks.modules (already using the canonical groupId)
-
stacks-java-core-api
- Path inspected:
java/pom.xml
- References parent: yes
- groupId observed:
com.amido.stacks.modules (older groupId)
-
stacks-java-azure-cosmos
- Path inspected:
java/pom.xml
- References parent: yes
- groupId observed:
com.amido.stacks.modules
-
stacks-java-aws-dynamodb
- Path inspected:
java/pom.xml
- References parent: yes
- groupId observed:
com.amido.stacks.modules
-
stacks-java-core-messaging
- Path inspected:
java/pom.xml
- References parent: yes
- groupId observed:
com.amido.stacks.modules
-
stacks-java-core-cqrs
- Path inspected:
java/pom.xml
- References parent: yes
- groupId observed:
com.amido.stacks.modules
-
stacks-java-azure-servicebus
- Path inspected:
java/pom.xml
- References parent: yes
- groupId observed:
com.amido.stacks.modules
-
stacks-java-aws-sqs
- Path inspected: attempted
java/pom.xml (404)
- Status: missing
pom.xml at inspected path or repo layout differs; may be archived or not a Java module.
-
stacks-java-cqrs
- Path inspected:
java/pom.xml (if present)
- References parent: yes (in many modules)
- groupId observed: mixed (some modules use
com.amido.stacks.modules)
-
stacks-java-cqrs-events
- Path inspected:
java/pom.xml
- References parent: yes
- groupId observed:
com.amido.stacks.modules
-
stacks-java
- Path inspected: root
pom.xml (if present)
- Notes: a meta repo in some orgs; needs per-repo check. (status: needs follow-up)
-
stacks-pact-provider-java
- Path inspected: attempted root
pom.xml (404)
- Status: missing or layout differs; may be sample or not present.
-
java-stacks-with-micronaut
- Path inspected: attempted
pom.xml (layout differs)
- Notes: demo/micronaut sample; exclude unless maintainers request adoption.
-
stacks-java-sample-*
- Notes: sample/demo repos discovered during search. Skip by default.
-
(others)
- Several additional
stacks-java-* repositories were discovered but returned 404 when attempting to fetch pom.xml at the usual paths. These need per-repo follow-up to locate POMs, if present.
Next actions
If you'd like, I can now parse the poms I downloaded to produce the structured table and then open pilot PRs. Which step should I take next?
/cc @Ensono/stacks-maintainers
Summary
This issue tracks aligning Ensono
stacks-java-*repositories with the canonical parent POM maintained in this repository (stacks-java-module-parent). The goal is to ensure a consistent parent POM across active Java modules, using versionv3.0.66(latest as of 2025-09-15), and to skip archived/sample repositories.Why: a single maintained parent POM centralizes dependency management, plugin configuration, security patches and CI conventions (OWASP, fmt, checkstyle, spotbugs, jacoco, etc.). Some repositories still reference the older groupId
com.amido.stacks.modulesor use other parents (for examplespring-boot-starter-parent).Target parent coordinates to apply in child POMs:
Current state (summary)
stacks-java-*in the Ensono org (18 matches).<parent>withartifactIdstacks-modules-parentbut several point at the older groupIdcom.amido.stacks.modulesand different versions.pom.xmlat the root or are archived and should be skipped.Scope & exclusions
stacks-java-containing Java modules intended to be part of the Stacks family. We'll modify module POMs that are under active maintenance.Acceptance criteria
com.ensono.stacks.modules, artifactIdstacks-modules-parent, version3.0.94.mvn -DskipTests verifyor the repo's existing CI) for each updated repo.Action plan (checklist)
Prepare a small automated script to: clone targeted repos, find module POM(s) (root or
java/pom.xml), update<parent>to v3.0.66 or add it when missing (careful), and run a smoke build.pom.xml,java/pom.xml).<parent>has groupIdcom.amido.stacks.modules, update the groupId tocom.ensono.stacks.modulesand the version to3.0.94.<parent>and the project is an active Stacks module, propose adding the parent block (includerelativePathif necessary).Run the script locally for a small pilot set (2-3 active repos). Validate builds and address any plugin or property regressions.
Create branches and open PRs per-repo. Each PR should include:
Request maintainers' review on each PR. Address any feedback.
Merge PRs after approval and passing CI.
Update central documentation (this README and the
amido.github.ioor equivalent docs) to note thatv3.0.94is the recommended parent.Follow-up: schedule a periodic check (quarterly) to ensure modules remain on supported parent version.
References
owasp-dependency-checkprofile and other shared build configuration:pom.xmlin this repo.stacks-modules-parent(examples pulled from multiple repos): manyjava/pom.xmlfiles reference the artifactIdstacks-modules-parentwith groupIdcom.amido.stacks.modulesorcom.ensono.stacks.modules.Security impact
Notes and caveats
spring-boot-starter-parentor other special parents; changing the parent may require merging plugin config (forspring-boot-maven-pluginsettings) into the stacks parent or a custom child configuration. Treat these on a case-by-case basis.If you'd like, I can prepare the pilot script and open PRs for a small batch of repos (2–3) so you can review the pattern before wider rollout. Please confirm:
3.0.94(confirmed)This document tracks the
stacks-java-*repositories discovered in the Ensono organization during the repo inventory run. It records where apom.xmlwas found (root orjava/pom.xml), whether the child POM referencesstacks-modules-parent, and notes about groupId (com.ensono vs com.amido), archived/sample status, or missing files.Notes:
com.ensono.stacks.modules:stacks-modules-parent:3.0.94<parent>block withartifactIdstacks-modules-parent.Inventory (observed repos)
stacks-java-module-parent
pom.xml(this repo)stacks-java-core-commons
java/pom.xmlcom.ensono.stacks.modules(already using the canonical groupId)stacks-java-core-api
java/pom.xmlcom.amido.stacks.modules(older groupId)stacks-java-azure-cosmos
java/pom.xmlcom.amido.stacks.modulesstacks-java-aws-dynamodb
java/pom.xmlcom.amido.stacks.modulesstacks-java-core-messaging
java/pom.xmlcom.amido.stacks.modulesstacks-java-core-cqrs
java/pom.xmlcom.amido.stacks.modulesstacks-java-azure-servicebus
java/pom.xmlcom.amido.stacks.modulesstacks-java-aws-sqs
java/pom.xml(404)pom.xmlat inspected path or repo layout differs; may be archived or not a Java module.stacks-java-cqrs
java/pom.xml(if present)com.amido.stacks.modules)stacks-java-cqrs-events
java/pom.xmlcom.amido.stacks.modulesstacks-java
pom.xml(if present)stacks-pact-provider-java
pom.xml(404)java-stacks-with-micronaut
pom.xml(layout differs)stacks-java-sample-*
(others)
stacks-java-*repositories were discovered but returned 404 when attempting to fetchpom.xmlat the usual paths. These need per-repo follow-up to locate POMs, if present.Next actions
com.amido.stacks.modulesto update tocom.ensono.stacks.modules:stacks-modules-parent:3.0.94.If you'd like, I can now parse the poms I downloaded to produce the structured table and then open pilot PRs. Which step should I take next?
/cc @Ensono/stacks-maintainers