From 3b184c78281f9c2954c986fad857d6f5bfdb3a0f Mon Sep 17 00:00:00 2001 From: William Leung Date: Mon, 2 Mar 2020 12:47:17 +0800 Subject: [PATCH 1/2] [MRESOLVER-98] resolver ant task doesn't obey dependencyManagement --- .../resolver/internal/ant/AntRepoSys.java | 52 ++++++++++++------- .../resolver/internal/ant/ResolveTest.java | 17 ++++-- src/test/resources/ant/Resolve/ant.xml | 9 ++++ .../Resolve/with-dependency-management.pom | 48 +++++++++++++++++ 4 files changed, 103 insertions(+), 23 deletions(-) create mode 100644 src/test/resources/ant/Resolve/with-dependency-management.pom 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..ab560fd 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,23 @@ 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 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..b32b05b 100644 --- a/src/test/resources/ant/Resolve/ant.xml +++ b/src/test/resources/ant/Resolve/ant.xml @@ -68,6 +68,15 @@ + + + + + + + + + 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 + + + From 7b2366267966d16fffb83971a0f60afb64c780cf Mon Sep 17 00:00:00 2001 From: William Leung Date: Tue, 3 Mar 2020 17:34:45 +0800 Subject: [PATCH 2/2] test: add test case testResolvePomWithScopedAndManagement (failed) --- .../resolver/internal/ant/ResolveTest.java | 8 +++ src/test/resources/ant/Resolve/ant.xml | 9 ++++ .../Resolve/with-scoped-and-management.pom | 50 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 src/test/resources/ant/Resolve/with-scoped-and-management.pom 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 ab560fd..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 @@ -85,6 +85,14 @@ public void testResolvePomWithManagedDeps() 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 { diff --git a/src/test/resources/ant/Resolve/ant.xml b/src/test/resources/ant/Resolve/ant.xml index b32b05b..9b3767a 100644 --- a/src/test/resources/ant/Resolve/ant.xml +++ b/src/test/resources/ant/Resolve/ant.xml @@ -77,6 +77,15 @@ + + + + + + + + + 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 + + + +