diff --git a/src/main/java/org/apache/maven/resolver/internal/ant/AntRepoSys.java b/src/main/java/org/apache/maven/resolver/internal/ant/AntRepoSys.java index d6329ad..10e8d63 100644 --- a/src/main/java/org/apache/maven/resolver/internal/ant/AntRepoSys.java +++ b/src/main/java/org/apache/maven/resolver/internal/ant/AntRepoSys.java @@ -627,6 +627,33 @@ private void populateCollectRequest( if (dependencies.getPom() != null) { Model model = dependencies.getPom().getModel(task); + if (model.getDependencyManagement() != null) { + for (org.apache.maven.model.Dependency manDep : + model.getDependencyManagement().getDependencies()) { + Dependency dependency = new Dependency(); + dependency.setArtifactId(manDep.getArtifactId()); + dependency.setClassifier(manDep.getClassifier()); + dependency.setGroupId(manDep.getGroupId()); + dependency.setScope(manDep.getScope()); + dependency.setType(manDep.getType()); + dependency.setVersion(manDep.getVersion()); + if (manDep.getSystemPath() != null + && !manDep.getSystemPath().isEmpty()) { + dependency.setSystemPath(task.getProject().resolveFile(manDep.getSystemPath())); + } + for (org.apache.maven.model.Exclusion exc : manDep.getExclusions()) { + Exclusion exclusion = new Exclusion(); + exclusion.setGroupId(exc.getGroupId()); + exclusion.setArtifactId(exc.getArtifactId()); + exclusion.setClassifier("*"); + exclusion.setExtension("*"); + dependency.addExclusion(exclusion); + } + collectRequest.addManagedDependency( + ConverterUtils.toDependency(dependency, globalExclusions, session)); + } + } + for (org.apache.maven.model.Dependency dep : model.getDependencies()) { Dependency dependency = new Dependency(); dependency.setArtifactId(dep.getArtifactId()); diff --git a/src/test/java/org/apache/maven/resolver/internal/ant/ResolveTest.java b/src/test/java/org/apache/maven/resolver/internal/ant/ResolveTest.java index 18307aa..022efd6 100644 --- a/src/test/java/org/apache/maven/resolver/internal/ant/ResolveTest.java +++ b/src/test/java/org/apache/maven/resolver/internal/ant/ResolveTest.java @@ -158,4 +158,23 @@ public void testResolveResourceCollectionOnly() { file = (FileResource) it.next(); assertThat(file.getFile().getName(), is("aether-api-0.9.0.v20140226.jar")); } + + @Test + public void testResolveTransitiveDependencyManagement() { + executeTarget("testResolveTransitiveDependencyManagement"); + + String prop = getProject().getProperty("test.resolve.path.org.slf4j:slf4j-api:jar"); + assertThat("slf4j-api was not resolved as a property", prop, notNullValue()); + assertThat( + "slf4j-api was not resolved to default local repository", + prop, + allOf(containsString("slf4j-api"), endsWith("slf4j-api-2.0.6.jar"))); + + prop = getProject().getProperty("test.resolve.path.org.apiguardian:apiguardian-api:jar"); + assertThat("apiguardian-api was not resolved as a property", prop, notNullValue()); + assertThat( + "apiguardian-api was not resolved to default local repository", + prop, + allOf(containsString("apiguardian-api"), endsWith("apiguardian-api-1.1.1.jar"))); + } } diff --git a/src/test/resources/ant/Resolve/ant.xml b/src/test/resources/ant/Resolve/ant.xml index 12b4f34..d88fd59 100644 --- a/src/test/resources/ant/Resolve/ant.xml +++ b/src/test/resources/ant/Resolve/ant.xml @@ -119,4 +119,11 @@ + + + + + + + diff --git a/src/test/resources/ant/Resolve/transitive-depmgt-pom.xml b/src/test/resources/ant/Resolve/transitive-depmgt-pom.xml new file mode 100644 index 0000000..dd6f8a6 --- /dev/null +++ b/src/test/resources/ant/Resolve/transitive-depmgt-pom.xml @@ -0,0 +1,82 @@ + + + + + + 4.0.0 + + + org.sonatype.forge + forge-parent + 10 + + + org.eclipse.aether + aether-ant-tasks + 1.0-SNAPSHOT + + + UTF-8 + + + + + + + + org.slf4j + slf4j-api + 2.0.6 + + + org.apiguardian + apiguardian-api + 1.1.1 + + + org.junit + junit-bom + 5.10.0 + pom + import + + + + + + + org.slf4j + slf4j-simple + 2.0.7 + + + org.junit.jupiter + junit-jupiter-api + test + + +