diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java index e3164beba450..9d74419c989e 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java @@ -176,8 +176,8 @@ private Dependency merge(Dependency dep1, Dependency dep2) { } private static String getDependencyKey(org.apache.maven.api.Dependency dependency) { - return dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getType() + ":" - + dependency.getClassifier(); + return dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + + dependency.getType().id() + ":" + dependency.getClassifier(); } private static String getDependencyKey(Dependency dependency) { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/type/DefaultType.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/type/DefaultType.java index 5922fea2257e..86607b7703da 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/type/DefaultType.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/resolver/type/DefaultType.java @@ -111,4 +111,16 @@ public Set getPathTypes() { public Map getProperties() { return properties; } + + @Override + public String toString() { + return "DefaultType[" + "id='" + + id + '\'' + ", language=" + + language + ", extension='" + + extension + '\'' + ", classifier='" + + classifier + '\'' + ", includesDependencies=" + + includesDependencies + ", pathTypes=" + + pathTypes + ", properties=" + + properties + ']'; + } } diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8645ConsumerPomDependencyManagementTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8645ConsumerPomDependencyManagementTest.java new file mode 100644 index 000000000000..a6e32c0d152a --- /dev/null +++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8645ConsumerPomDependencyManagementTest.java @@ -0,0 +1,74 @@ +/* + * 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.Reader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.apache.maven.api.model.Model; +import org.apache.maven.model.v4.MavenStaxReader; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * This is a test set for MNG-8645. + */ +class MavenITmng8645ConsumerPomDependencyManagementTest extends AbstractMavenIntegrationTestCase { + + MavenITmng8645ConsumerPomDependencyManagementTest() { + super("(4.0.0-rc-3,)"); + } + + /** + * Verify the dependency management of the consumer POM is computed correctly + */ + @Test + void testIt() throws Exception { + Path basedir = extractResources("/mng-8645-consumer-pom-dep-mgmt") + .getAbsoluteFile() + .toPath(); + + Verifier verifier = newVerifier(basedir.toString()); + verifier.addCliArgument("install"); + verifier.execute(); + verifier.verifyErrorFreeLog(); + + // validate consumer pom + Path consumerPom = basedir.resolve(Paths.get( + "target", + "project-local-repo", + "org.apache.maven.its.mng8645", + "test", + "1.0", + "test-1.0-consumer.pom")); + assertTrue(Files.exists(consumerPom)); + Model consumerPomModel; + try (Reader r = Files.newBufferedReader(consumerPom)) { + consumerPomModel = new MavenStaxReader().read(r); + } + assertNotNull(consumerPomModel.getDependencyManagement()); + assertEquals( + 1, consumerPomModel.getDependencyManagement().getDependencies().size()); + } +} diff --git a/its/core-it-suite/src/test/resources/mng-8645-consumer-pom-dep-mgmt/pom.xml b/its/core-it-suite/src/test/resources/mng-8645-consumer-pom-dep-mgmt/pom.xml new file mode 100644 index 000000000000..6665c0f71227 --- /dev/null +++ b/its/core-it-suite/src/test/resources/mng-8645-consumer-pom-dep-mgmt/pom.xml @@ -0,0 +1,25 @@ + + + org.apache.maven.its.mng8645 + test + 1.0 + jar + + + + + commons-io + commons-io + 2.16.1 + + + + + + + org.apache.maven.shared + file-management + 3.1.0 + + +