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 b5736ad..873c900 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 @@ -755,33 +755,22 @@ private void populateCollectRequest( CollectRequest collectRequest, Task task, R Model model = dependencies.getPom().getModel( task ); for ( org.apache.maven.model.Dependency dep : model.getDependencies() ) { - Dependency dependency = new Dependency(); - dependency.setArtifactId( dep.getArtifactId() ); - dependency.setClassifier( dep.getClassifier() ); - dependency.setGroupId( dep.getGroupId() ); - dependency.setScope( dep.getScope() ); - dependency.setType( dep.getType() ); - dependency.setVersion( dep.getVersion() ); + Dependency dependency = toDependency( dep, task ); if ( ids.contains( dependency.getVersionlessKey() ) ) { project.log( "Ignoring dependency " + dependency.getVersionlessKey() + " from " + model.getId() + ", already declared locally", Project.MSG_VERBOSE ); continue; } - if ( dep.getSystemPath() != null && dep.getSystemPath().length() > 0 ) - { - dependency.setSystemPath( task.getProject().resolveFile( dep.getSystemPath() ) ); - } - for ( org.apache.maven.model.Exclusion exc : dep.getExclusions() ) + collectRequest.addDependency( ConverterUtils.toDependency( dependency, globalExclusions, session ) ); + } + if ( model.getDependencyManagement() != null ) + { + for ( org.apache.maven.model.Dependency dep : model.getDependencyManagement().getDependencies() ) { - Exclusion exclusion = new Exclusion(); - exclusion.setGroupId( exc.getGroupId() ); - exclusion.setArtifactId( exc.getArtifactId() ); - exclusion.setClassifier( "*" ); - exclusion.setExtension( "*" ); - dependency.addExclusion( exclusion ); + Dependency dependency = toDependency( dep, task ); + collectRequest.addManagedDependency( ConverterUtils.toDependency( dependency, globalExclusions, session ) ); } - collectRequest.addDependency( ConverterUtils.toDependency( dependency, globalExclusions, session ) ); } } @@ -801,6 +790,31 @@ private void populateCollectRequest( CollectRequest collectRequest, Task task, R } } + private Dependency toDependency( org.apache.maven.model.Dependency dep, Task task ) + { + Dependency dependency = new Dependency(); + dependency.setArtifactId( dep.getArtifactId() ); + dependency.setClassifier( dep.getClassifier() ); + dependency.setGroupId( dep.getGroupId() ); + dependency.setScope( dep.getScope() ); + dependency.setType( dep.getType() ); + dependency.setVersion( dep.getVersion() ); + if ( dep.getSystemPath() != null && dep.getSystemPath().length() > 0 ) + { + dependency.setSystemPath( task.getProject().resolveFile( dep.getSystemPath() ) ); + } + for ( org.apache.maven.model.Exclusion exc : dep.getExclusions() ) + { + Exclusion exclusion = new Exclusion(); + exclusion.setGroupId( exc.getGroupId() ); + exclusion.setArtifactId( exc.getArtifactId() ); + exclusion.setClassifier( "*" ); + exclusion.setExtension( "*" ); + dependency.addExclusion( exclusion ); + } + return dependency; + } + private List readDependencies( File file ) { List dependencies = new ArrayList(); 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 a736a74..17638b7 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 @@ -8,9 +8,9 @@ * 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 @@ -76,14 +76,31 @@ public void testResolveCustomFileLayout() new File( dir, "org.eclipse.aether/aether-api/org/eclipse/aether/jar" ).exists() ); } + public void testResolvePomWithManagedDeps() + { + executeTarget( "testResolvePomWithManagedDeps" ); + + String prop = getProject().getProperty( "test.resolve.path.org.apache.maven.resolver:maven-resolver-api:jar" ); + assertThat( "maven-resolver-api was not resolved to managed version", prop.replace( '\\', '/' ), + endsWith( "org/apache/maven/resolver/maven-resolver-api/1.4.1/maven-resolver-api-1.4.1.jar" ) ); + } + + public void testResolvePomWithScopedAndManagement() + { + executeTarget( "testResolvePomWithScopedAndManagement" ); + + assertNull( getProject().getProperty( "test.resolve.path.org.apache.maven.resolver:maven-resolver-util:jar" ) ); + assertNull( getProject().getProperty( "test.resolve.path.org.apache.maven.resolver:maven-resolver-api:jar" ) ); + } + public void testResolveAttachments() throws IOException { File dir = new File( BUILD_DIR, "resolve-attachments" ); executeTarget( "testResolveAttachments" ); - + File jdocDir = new File(dir, "javadoc"); - + assertThat( "aether-api-javadoc was not saved with custom file layout", new File( jdocDir, "org.eclipse.aether-aether-api-javadoc.jar" ).exists() ); diff --git a/src/test/resources/ant/Resolve/ant.xml b/src/test/resources/ant/Resolve/ant.xml index 12b4f34..9b3767a 100644 --- a/src/test/resources/ant/Resolve/ant.xml +++ b/src/test/resources/ant/Resolve/ant.xml @@ -68,6 +68,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/ant/Resolve/with-dependency-management.pom b/src/test/resources/ant/Resolve/with-dependency-management.pom new file mode 100644 index 0000000..759b540 --- /dev/null +++ b/src/test/resources/ant/Resolve/with-dependency-management.pom @@ -0,0 +1,48 @@ + + + + + + 4.0.0 + + test + dummy + 0.1-SNAPSHOT + + + + + org.apache.maven.resolver + maven-resolver-api + 1.4.1 + + + + + + + org.apache.maven.resolver + maven-resolver-util + 1.4.0 + + + diff --git a/src/test/resources/ant/Resolve/with-scoped-and-management.pom b/src/test/resources/ant/Resolve/with-scoped-and-management.pom new file mode 100644 index 0000000..c51844c --- /dev/null +++ b/src/test/resources/ant/Resolve/with-scoped-and-management.pom @@ -0,0 +1,50 @@ + + + + + + 4.0.0 + + test + dummy + 0.1-SNAPSHOT + + + + + org.apache.maven.resolver + maven-resolver-api + 1.4.1 + + + + + + + org.apache.maven.resolver + maven-resolver-util + 1.4.1 + test + + + +