Skip to content

Use request properties consistently for CI-friendly version interpolation#12177

Open
gnodet wants to merge 1 commit into
apache:masterfrom
gnodet:fix/revision-ci-friendly
Open

Use request properties consistently for CI-friendly version interpolation#12177
gnodet wants to merge 1 commit into
apache:masterfrom
gnodet:fix/revision-ci-friendly

Conversation

@gnodet
Copy link
Copy Markdown
Contributor

@gnodet gnodet commented May 28, 2026

Summary

  • Fix inconsistent property source in DefaultModelBuilder that caused ${revision} to not be properly interpolated in dependency versions and distributionManagement when user properties differ between the ModelBuilderRequest and the Session
  • Fix DefaultConsumerPomBuilder to use API Session properties instead of RepositorySystemSession properties for consumer POM model building
  • Add tests for CI-friendly ${revision} interpolation in dependency versions with model properties, user property overrides, and user-property-only scenarios

Context

The model builder used session.getEffectiveProperties() / session.getUserProperties() for CI-friendly version replacement and model property merging, while model interpolation used request.getUserProperties(). These can diverge when a ModelBuilderRequest is created with custom user properties. The fix makes all property lookups use request properties consistently.

Test plan

  • DefaultModelBuilderTest — 3 new tests for ${revision} in dependency versions and distributionManagement
  • DefaultModelBuilderTest — all 9 tests pass
  • maven-impl — all 471 tests pass
  • maven-core — all 546 tests pass (1 pre-existing skip)
  • maven-compat — all 160 tests pass (7 pre-existing skips)

🤖 Generated with Claude Code

…tion

The model builder inconsistently used session properties for CI-friendly
version replacement and model property merging, while model interpolation
used request properties. When user properties on the ModelBuilderRequest
differ from the Session (e.g. -Drevision=2.0.0 overriding a POM-defined
revision), ${revision} in dependency versions and distributionManagement
was not properly resolved.

Fix three places in DefaultModelBuilder to use request properties:
- getPropertiesWithProfiles(): use request system+user properties
  instead of session.getEffectiveProperties()
- doReadFileModel(): use request.getUserProperties() instead of
  session.getUserProperties() for model property and profile merging

Also fix DefaultConsumerPomBuilder.buildModel() to pass API Session
properties (iSession) instead of RepositorySystemSession properties
to the model builder request, ensuring consumer POM builds have
access to the full set of user properties.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

1 participant