Skip to content

Conversation

@velo
Copy link
Member

@velo velo commented Oct 21, 2025

Summary

  • Extracted all hardcoded version numbers from parent and child module POMs to centralized properties in the parent POM
  • This improves maintainability by making version updates easier and ensuring consistency across all modules

Changes

Parent POM (pom.xml)

Added 49 new version properties organized into two sections:

Maven Plugin Versions:

  • maven-enforcer-plugin.version (3.6.2)
  • maven-toolchains-plugin.version (3.2.0)
  • go-offline-maven-plugin.version (1.2.8)
  • sortpom-maven-plugin.version (4.0.0)
  • jacoco-maven-plugin.version (0.8.14)
  • easy-jacoco-maven-plugin.version (0.1.4)
  • rewrite-maven-plugin.version (6.21.1)
  • rewrite-testing-frameworks.version (3.19.0)
  • rewrite-migrate-java.version (3.19.0)
  • java18-signature.version (1.0)
  • maven-shade-plugin.version (3.6.1)
  • really-executable-jar-maven-plugin.version (2.1.1)
  • org.eclipse.transformer.maven.version (0.2.0)

Third-Party Dependency Versions:

  • Apache Commons: commons-text, commons-exec, commons-fileupload, commons-codec
  • Testing: compile-testing, mockito.version (5.20.0)
  • Spring: spring-web, spring-context, spring-cloud-*
  • Jakarta EE: jakarta.ws.rs-api, jakarta.xml.bind-api, jakarta.xml.soap-api, jakarta.xml.ws-api
  • Java EE: javax.ws.rs-api, jaxb-api, jaxb-impl, jaxws-api
  • HTTP Clients: httpclient4, httpclient5
  • Metrics: metrics-core-4, metrics-core-5
  • SOAP: saaj-impl-1, saaj-impl-3
  • Other: lombok, handlebars, hystrix-core, undertow-core, jersey-client, archaius-core, and more

Child Module POMs

Updated 23 child module POMs to use the new properties instead of hardcoded versions:

  • apt-test-generator, benchmark, core, dropwizard-metrics4, dropwizard-metrics5
  • example-github, example-github-with-coroutine, example-wikipedia, example-wikipedia-with-springboot
  • form, form-spring, hc5, httpclient, hystrix
  • jackson-jaxb, jaxb, jaxb-jakarta, jaxrs, jaxrs2, jaxrs3, jaxrs4
  • soap, soap-jakarta

Benefits

  1. Single Source of Truth: All versions are now defined in one place (parent POM properties section)
  2. Easier Maintenance: Updating a dependency version across the project now requires changing only one property
  3. Consistency: Ensures all modules using the same dependency use the same version
  4. Better Visibility: All external dependency versions are clearly visible in the parent POM
  5. No Conflicts: Each property has a unique name; artifacts with multiple versions use suffixed properties (e.g., metrics-core-4.version vs metrics-core-5.version)

Validation

  • ✅ Build validated successfully (mvn validate -Pquickbuild -Dtoolchain.skip=true)
  • ✅ No duplicate property names
  • ✅ All hardcoded versions extracted (verified with git grep)
  • ✅ Git hooks passed (code formatting)

Files Changed

  • 24 files changed: 102 insertions(+), 63 deletions(-)
  • 1 parent POM + 23 child module POMs

🤖 Generated with Claude Code

@velo velo merged commit ab644ee into master Oct 21, 2025
4 checks passed
@velo velo deleted the refactor/extract-all-versions-to-properties branch October 21, 2025 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants