diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java index 5e917c76fd8e..da684ba32fb7 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java @@ -1135,7 +1135,16 @@ private Model readParentLocally( } try { - ModelBuilderSessionState derived = derive(candidateSource); + ModelBuilderSessionState derived; + if (request.getRequestType() == ModelBuilderRequest.RequestType.BUILD_CONSUMER) { + ModelBuilderRequest parentRequest = ModelBuilderRequest.builder(request) + .requestType(ModelBuilderRequest.RequestType.CONSUMER_PARENT) + .source(candidateSource) + .build(); + derived = derive(parentRequest); + } else { + derived = derive(candidateSource); + } // Check GA match BEFORE readAsParentModel() which recursively resolves // the candidate's parent chain and can trigger false cycle detection (GH-12074). diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11798ConsumerPomProfileActivationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11798ConsumerPomProfileActivationTest.java new file mode 100644 index 000000000000..4e4f11a3baa1 --- /dev/null +++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11798ConsumerPomProfileActivationTest.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.maven.it; + +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; + +/** + * Verify that consumer POM generation preserves profile activation for locally-resolved parent POMs. + * When a parent POM defines properties inside a profile with property-based activation, + * those properties must be resolved during BUILD_CONSUMER so that BOM imports using + * those properties do not fail with "Invalid Version Range Request". + * + * @see GH-11798 + */ +class MavenITgh11798ConsumerPomProfileActivationTest extends AbstractMavenIntegrationTestCase { + + @Test + void testConsumerPomResolvesParentProfileProperties() throws Exception { + Path basedir = extractResources("/gh-11798-consumer-pom-profile-activation").toPath(); + + Verifier verifier = newVerifier(basedir.toString()); + verifier.addCliArgument("install"); + verifier.execute(); + verifier.verifyErrorFreeLog(); + } +} diff --git a/its/core-it-suite/src/test/resources/gh-11798-consumer-pom-profile-activation/child/pom.xml b/its/core-it-suite/src/test/resources/gh-11798-consumer-pom-profile-activation/child/pom.xml new file mode 100644 index 000000000000..21c12802b797 --- /dev/null +++ b/its/core-it-suite/src/test/resources/gh-11798-consumer-pom-profile-activation/child/pom.xml @@ -0,0 +1,43 @@ + + + + 4.1.0 + + + org.apache.maven.its.gh11798 + parent + 1.0 + + + child + jar + + + + + org.apache.maven.its.gh11798 + test-bom + ${dep.version} + pom + import + + + + diff --git a/its/core-it-suite/src/test/resources/gh-11798-consumer-pom-profile-activation/pom.xml b/its/core-it-suite/src/test/resources/gh-11798-consumer-pom-profile-activation/pom.xml new file mode 100644 index 000000000000..f37a5a75cb32 --- /dev/null +++ b/its/core-it-suite/src/test/resources/gh-11798-consumer-pom-profile-activation/pom.xml @@ -0,0 +1,59 @@ + + + + 4.1.0 + + org.apache.maven.its.gh11798 + parent + 1.0 + pom + + + child + + + + + + true + ignore + + + false + + local-test-repo + file://${project.rootDirectory}/repo + + + + + + default-versions + + + !skipDefaultVersions + + + + 1.0 + + + + diff --git a/its/core-it-suite/src/test/resources/gh-11798-consumer-pom-profile-activation/repo/org/apache/maven/its/gh11798/test-bom/1.0/test-bom-1.0.pom b/its/core-it-suite/src/test/resources/gh-11798-consumer-pom-profile-activation/repo/org/apache/maven/its/gh11798/test-bom/1.0/test-bom-1.0.pom new file mode 100644 index 000000000000..7e82f9cdf8f5 --- /dev/null +++ b/its/core-it-suite/src/test/resources/gh-11798-consumer-pom-profile-activation/repo/org/apache/maven/its/gh11798/test-bom/1.0/test-bom-1.0.pom @@ -0,0 +1,7 @@ + + 4.0.0 + org.apache.maven.its.gh11798 + test-bom + 1.0 + pom +