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
+
+
+