Fix CI-friendly version processing with profile properties (fixes #11196)#11214
Merged
gnodet merged 1 commit intoapache:masterfrom Oct 8, 2025
Merged
Conversation
0862105 to
d3b96b0
Compare
0f6bc19 to
aad0061
Compare
…e#11196) Changes to \ in profiles do not propagate to the final project version. This issue occurs because CI-friendly version processing happens before profile activation, so profile properties are not available during version resolution. This commit implements enhanced property resolution that performs lightweight profile activation during CI-friendly version processing to ensure profile properties are available for both version resolution and repository URL interpolation. Key changes: - Enhanced CI-friendly version processing with profile-aware property resolution - Unified property resolution for both CI-friendly versions and repository URLs - Added directory properties (basedir, rootDirectory) to profile activation context - Comprehensive test coverage for profile-based CI-friendly versions The solution maintains full backward compatibility while enabling profile-based version manipulation that was possible in Maven 3 but broken in Maven 4. Fixes apache#11196
aad0061 to
413ab5d
Compare
Contributor
Author
💚 All backports created successfully
Questions ?Please refer to the Backport tool documentation |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem:
Changes to
${revision}in profiles do not propagate to the final project version in Maven 4. This regression from Maven 3 occurs because CI-friendly version processing happens before profile activation, so profile properties are not available during version resolution.Example of the issue:
mvn clean→ version:0.2.0+dev✅mvn clean -Prelease→ version:0.2.0+dev❌ (should be0.2.0)Root Cause:
In Maven 4, the model building sequence is:
This means profile properties are not available when CI-friendly versions are resolved.
Solution:
Implement enhanced property resolution that performs lightweight profile activation during CI-friendly version processing. This ensures profile properties are available for both version resolution and repository URL interpolation.
Key Changes
1. Enhanced Property Resolution (
DefaultModelBuilder.java)getEnhancedProperties(Model model): New method that performs profile-aware property resolutiongetPropertiesWithProfiles(Model model, Map<String, String> baseProperties): Performs lightweight profile activation2. Directory Properties Integration
basedir,project.basedir,project.rootDirectory) to be available during profile activation3. Comprehensive Test Coverage
DefaultModelBuilderTest.javawith 3 new test methodsMavenITmng11196CIFriendlyProfilesTest.javareproducing the exact GitHub issueBenefits
Additional Use Cases Enabled
Repository URLs with Profile Properties
File-based Profile Activation with Directory Properties
Testing
The implementation includes comprehensive test coverage:
Unit Tests:
testCiFriendlyVersionWithProfiles(): Basic profile-based CI-friendly versionstestRepositoryUrlInterpolationWithProfiles(): Repository URL interpolation with profilestestDirectoryPropertiesInProfilesAndRepositories(): Directory properties in profilesIntegration Tests:
MavenITmng11196CIFriendlyProfilesTest: Reproduces the exact GitHub issue scenarioVerification
After the fix:
mvn clean→ version:0.2.0+dev✅mvn clean -Prelease→ version:0.2.0✅Closes #11196
Pull Request opened by Augment Code with guidance from the PR author