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 4fb88d16fc09..0c989e0fd10f 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 @@ -535,7 +535,8 @@ public ModelBuilderException newModelBuilderException() { } public void mergeRepositories(Model model, boolean replace) { - if (model.getRepositories().isEmpty()) { + if (model.getRepositories().isEmpty() + || InternalSession.from(session).getSession().isIgnoreArtifactDescriptorRepositories()) { return; } // We need to interpolate the repositories before we can use them diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2576ItrNotHonoredTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2576ItrNotHonoredTest.java new file mode 100644 index 000000000000..294cd20ed2b5 --- /dev/null +++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2576ItrNotHonoredTest.java @@ -0,0 +1,57 @@ +/* + * 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.io.File; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +/** + * This is a test set for GH-2576. + *

+ * The issue occurs when a project has a dependency which defines a custom repository needed to load its parent. + * The -itr option should not use any transitive repository, so this project should fail. + * + */ +class MavenITgh2576ItrNotHonoredTest extends AbstractMavenIntegrationTestCase { + + @Test + void testItrNotHonored() throws Exception { + File testDir = extractResources("/gh-2576-itr-not-honored").getAbsoluteFile(); + + Verifier verifier = new Verifier(testDir.toString()); + verifier.deleteArtifacts("org.apache.maven.its.gh2576"); + + verifier = new Verifier(new File(testDir, "parent").toString()); + verifier.addCliArguments("install:install-file", "-Dfile=pom.xml", "-DpomFile=pom.xml", "-DlocalRepositoryPath=../repo/"); + verifier.execute(); + verifier.verifyErrorFreeLog(); + + // use maven 3 personality so that we don't flatten the pom + verifier = new Verifier(new File(testDir, "dep").toString()); + verifier.addCliArguments("install", "-Dmaven.maven3Personality"); + verifier.execute(); + verifier.verifyErrorFreeLog(); + + verifier = new Verifier(new File(testDir, "consumer").toString()); + verifier.addCliArguments("install", "-itr"); + assertThrows(VerificationException.class, verifier::execute); + } +} diff --git a/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/consumer/.mvn/.gitkeep b/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/consumer/.mvn/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/consumer/pom.xml b/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/consumer/pom.xml new file mode 100644 index 000000000000..fd5afce18514 --- /dev/null +++ b/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/consumer/pom.xml @@ -0,0 +1,15 @@ + + + 4.0.0 + org.apache.maven.its.gh2576 + consumer + 1.0-SNAPSHOT + + + + org.apache.maven.its.gh2576 + dep + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/dep/.mvn/.gitkeep b/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/dep/.mvn/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/dep/pom.xml b/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/dep/pom.xml new file mode 100644 index 000000000000..866560cdf13b --- /dev/null +++ b/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/dep/pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + org.apache.maven.its.gh2576 + parent + 1.0-SNAPSHOT + + + dep + + + + foo + file:///${basedir}/../repo + + ignore + true + + + + \ No newline at end of file diff --git a/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/parent/.mvn/.gitkeep b/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/parent/.mvn/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/parent/pom.xml b/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/parent/pom.xml new file mode 100644 index 000000000000..31ac88e50dfc --- /dev/null +++ b/its/core-it-suite/src/test/resources/gh-2576-itr-not-honored/parent/pom.xml @@ -0,0 +1,8 @@ + + + 4.0.0 + org.apache.maven.its.gh2576 + parent + 1.0-SNAPSHOT + pom + \ No newline at end of file