-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Disable consumer POM flattening by default and add an opt-in feature #11347
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
gnodet
merged 8 commits into
apache:master
from
gnodet:gh-11346-consumer-pom-flatten-control
Oct 31, 2025
Merged
Disable consumer POM flattening by default and add an opt-in feature #11347
gnodet
merged 8 commits into
apache:master
from
gnodet:gh-11346-consumer-pom-flatten-control
Oct 31, 2025
Conversation
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
This commit introduces a new feature flag 'maven.consumer.pom.flatten' that allows users to control whether consumer POMs are flattened or preserve their dependency management sections. Key changes: - Added MAVEN_CONSUMER_POM_FLATTEN constant in Constants.java - Added consumerPomFlatten() method in Features.java - Modified DefaultConsumerPomBuilder to conditionally apply flattening - Added integration test MavenITgh11346DependencyManagementOverrideTest - Renamed test resources to follow GitHub issue naming convention When maven.consumer.pom.flatten=false, consumer POMs preserve dependency management like parent POMs, enabling dependency management inheritance by consumers. This addresses scenarios where transitive dependency management is crucial for maintaining consistent dependency versions. The feature maintains backward compatibility with current default behavior (flattening enabled) while providing opt-in control for projects that need dependency management inheritance. Fixes apache#11346
ec3c886 to
67f11aa
Compare
- Add CONSUMER_POM_FLATTENING feature flag to Constants and Features - Update DefaultConsumerPomBuilder to respect flattening feature flag - Update integration tests to use proper @SInCE annotations and test ordering - Ensure consumer POM functionality works correctly with feature flag control This commit addresses consumer POM flattening control and ensures proper integration test coverage for the new functionality.
Contributor
Author
|
@Bukama fwiw, if we go this way, this will require an update to https://maven.apache.org/whatsnewinmaven4.html#Consumer_POM and will require a |
cstamas
approved these changes
Oct 29, 2025
gnodet
added a commit
to gnodet/maven
that referenced
this pull request
Oct 31, 2025
…pache#11347) This PR introduces a new feature flag maven.consumer.pom.flatten that allows users to control whether consumer POMs are flattened by removing dependency management sections. This addresses dependency management inheritance scenarios and provides better control over consumer POM generation. The consumer POM are NOT flattened anymore by default. Fixes apache#11346 (cherry picked from commit d213b58) # Conflicts: # api/maven-api-core/src/main/java/org/apache/maven/api/feature/Features.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5102MixinsTest.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8750NewScopesTest.java
Contributor
Author
💚 All backports created successfully
Questions ?Please refer to the Backport tool documentation |
gnodet
added a commit
to gnodet/maven
that referenced
this pull request
Oct 31, 2025
…pache#11347) This PR introduces a new feature flag maven.consumer.pom.flatten that allows users to control whether consumer POMs are flattened by removing dependency management sections. This addresses dependency management inheritance scenarios and provides better control over consumer POM generation. The consumer POM are NOT flattened anymore by default. Fixes apache#11346 (cherry picked from commit d213b58) # Conflicts: # api/maven-api-core/src/main/java/org/apache/maven/api/feature/Features.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5102MixinsTest.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8750NewScopesTest.java
gnodet
added a commit
to gnodet/maven
that referenced
this pull request
Oct 31, 2025
…pache#11347) This PR introduces a new feature flag maven.consumer.pom.flatten that allows users to control whether consumer POMs are flattened by removing dependency management sections. This addresses dependency management inheritance scenarios and provides better control over consumer POM generation. The consumer POM are NOT flattened anymore by default. Fixes apache#11346 (cherry picked from commit d213b58) # Conflicts: # api/maven-api-core/src/main/java/org/apache/maven/api/feature/Features.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5102MixinsTest.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8750NewScopesTest.java
gnodet
added a commit
to gnodet/maven
that referenced
this pull request
Oct 31, 2025
…pache#11347) This PR introduces a new feature flag maven.consumer.pom.flatten that allows users to control whether consumer POMs are flattened by removing dependency management sections. This addresses dependency management inheritance scenarios and provides better control over consumer POM generation. The consumer POM are NOT flattened anymore by default. Fixes apache#11346 (cherry picked from commit d213b58) # Conflicts: # api/maven-api-core/src/main/java/org/apache/maven/api/feature/Features.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5102MixinsTest.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8750NewScopesTest.java
gnodet
added a commit
to gnodet/maven
that referenced
this pull request
Oct 31, 2025
…pache#11347) This PR introduces a new feature flag maven.consumer.pom.flatten that allows users to control whether consumer POMs are flattened by removing dependency management sections. This addresses dependency management inheritance scenarios and provides better control over consumer POM generation. The consumer POM are NOT flattened anymore by default. Fixes apache#11346 (cherry picked from commit d213b58) # Conflicts: # api/maven-api-core/src/main/java/org/apache/maven/api/feature/Features.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5102MixinsTest.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8750NewScopesTest.java # Conflicts: # its/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java
gnodet
added a commit
to gnodet/maven
that referenced
this pull request
Oct 31, 2025
…pache#11347) This PR introduces a new feature flag maven.consumer.pom.flatten that allows users to control whether consumer POMs are flattened by removing dependency management sections. This addresses dependency management inheritance scenarios and provides better control over consumer POM generation. The consumer POM are NOT flattened anymore by default. Fixes apache#11346 (cherry picked from commit d213b58) # Conflicts: # api/maven-api-core/src/main/java/org/apache/maven/api/feature/Features.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5102MixinsTest.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8750NewScopesTest.java # Conflicts: # its/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java
gnodet
added a commit
that referenced
this pull request
Oct 31, 2025
…11347) (#11370) This PR introduces a new feature flag maven.consumer.pom.flatten that allows users to control whether consumer POMs are flattened by removing dependency management sections. This addresses dependency management inheritance scenarios and provides better control over consumer POM generation. The consumer POM are NOT flattened anymore by default. Fixes #11346 (cherry picked from commit d213b58) # Conflicts: # api/maven-api-core/src/main/java/org/apache/maven/api/feature/Features.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5102MixinsTest.java # its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8750NewScopesTest.java # Conflicts: # its/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
backport-to-4.0.x
breaking
Pull requests that break existing features
enhancement
New feature or request
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.
Summary
This PR introduces a new feature flag
maven.consumer.pom.flattenthat allows users to control whether consumer POMs are flattened by removing dependency management sections. This addresses dependency management inheritance scenarios and provides better control over consumer POM generation.The consumer POM are NOT flattened anymore by default.
Changes
Core Implementation
consumerPomFlatten()method to check the feature flag (defaults tofalse)Integration Tests
Feature Behavior
When
maven.consumer.pom.flatten=false(Default)When
maven.consumer.pom.flatten=true(Opt-in)Use Case Example
Consider this dependency scenario:
With
maven.consumer.pom.flatten=false(default):With
maven.consumer.pom.flatten=true:Benefits
Fixes #11346 and addresses dependency management inheritance scenarios