From e73f1b0069e9cef6a16dbbc2f85ba1c816e989b1 Mon Sep 17 00:00:00 2001 From: Maarten Coene Date: Mon, 10 Dec 2012 21:13:43 +0000 Subject: [PATCH] FIX: Maven2: resolve failure when parent has with dependency in 'import' scope (IVY-1376) (merged from trunk) git-svn-id: https://svn.apache.org/repos/asf/ant/ivy/core/branches/2.3.x@1419772 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 4 ++ .../parser/m2/PomModuleDescriptorParser.java | 8 +++- .../apache/ivy/core/resolve/ResolveTest.java | 27 ++++++++++++ .../org/apache/dm/parent/2.0/parent-2.0.pom | 26 ++++++------ .../org/apache/dm/parent2/1.0/parent2-1.0.pom | 9 ++++ .../org/apache/dm/parent3/1.0/parent3-1.0.pom | 38 +++++++++++++++++ .../org/apache/dm/test/3.0/test-3.0.pom | 42 +++++++++++++++++++ .../org/apache/dm/test5/1.0/test5-1.0.jar | 1 + .../org/apache/dm/test5/1.0/test5-1.0.pom | 26 ++++++++++++ .../org/apache/dm/test5/2.0/test5-2.0.jar | 1 + .../org/apache/dm/test5/2.0/test5-2.0.pom | 26 ++++++++++++ 11 files changed, 195 insertions(+), 13 deletions(-) create mode 100644 test/repositories/parentPom/org/apache/dm/parent3/1.0/parent3-1.0.pom create mode 100644 test/repositories/parentPom/org/apache/dm/test/3.0/test-3.0.pom create mode 100644 test/repositories/parentPom/org/apache/dm/test5/1.0/test5-1.0.jar create mode 100644 test/repositories/parentPom/org/apache/dm/test5/1.0/test5-1.0.pom create mode 100644 test/repositories/parentPom/org/apache/dm/test5/2.0/test5-2.0.jar create mode 100644 test/repositories/parentPom/org/apache/dm/test5/2.0/test5-2.0.pom diff --git a/CHANGES.txt b/CHANGES.txt index f5d59b11..51b7098b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -128,6 +128,10 @@ for detailed view of each issue, please consult http://issues.apache.org/jira/br Sven Zethelius Aleksey Zhukov + 2.3.x +===================================== +- FIX: Maven2: resolve failure when parent has with dependency in 'import' scope (IVY-1376) + 2.3.0-rc2 ===================================== - DOCUMENTATION: Documentation and Implementation mismatch of makepom (IVY-1383) (thanks to Thomas Kurpick) diff --git a/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java b/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java index acf51ca4..244900d4 100644 --- a/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java +++ b/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java @@ -252,7 +252,13 @@ public final class PomModuleDescriptorParser implements ModuleDescriptorParser { // add dependency management info from imported module List depMgt = PomModuleDescriptorBuilder.getDependencyManagements(importDescr); for (Iterator it2 = depMgt.iterator(); it2.hasNext();) { - mdBuilder.addDependencyMgt((PomDependencyMgt) it2.next()); + PomDependencyMgt importedDepMgt = (PomDependencyMgt) it2.next(); + mdBuilder.addDependencyMgt(new DefaultPomDependencyMgt( + importedDepMgt.getGroupId(), + importedDepMgt.getArtifactId(), + importedDepMgt.getVersion(), + importedDepMgt.getScope(), + importedDepMgt.getExcludedModules())); } } else { throw new IOException("Impossible to import module for " + res.getName() + "." diff --git a/test/java/org/apache/ivy/core/resolve/ResolveTest.java b/test/java/org/apache/ivy/core/resolve/ResolveTest.java index ef5cfc5d..cb931db1 100644 --- a/test/java/org/apache/ivy/core/resolve/ResolveTest.java +++ b/test/java/org/apache/ivy/core/resolve/ResolveTest.java @@ -4583,6 +4583,33 @@ public class ResolveTest extends TestCase { "test4", "jar", "jar").exists()); } + public void testResolveMaven2ParentPomDependencyManagementWithImport() throws Exception { + // IVY-1376 + Ivy ivy = new Ivy(); + ivy.configure(new File("test/repositories/parentPom/ivysettings.xml")); + ivy.getSettings().setDefaultResolver("parentChain"); + + ResolveReport report = ivy.resolve(new File( + "test/repositories/parentPom/org/apache/dm/test/3.0/test-3.0.pom").toURL(), + getResolveOptions(new String[] {"*"})); + assertNotNull(report); + + //test the report to make sure the right dependencies are listed + List dependencies = report.getDependencies(); + assertFalse(report.hasError()); + assertEquals(2, dependencies.size()); + + IvyNode ivyNode; + ivyNode = (IvyNode) dependencies.get(0); + assertNotNull(ivyNode); + ModuleRevisionId mrid = ModuleRevisionId.newInstance("org.apache.dm", "test5", "2.0"); + assertEquals(mrid, ivyNode.getId()); + assertTrue(getIvyFileInCache( + ModuleRevisionId.newInstance("org.apache.dm", "test5", "2.0")).exists()); + assertTrue(getArchiveFileInCache(ivy, "org.apache.dm", "test5", "2.0", + "test5", "jar", "jar").exists()); + } + public void testResolveMaven2Snapshot1() throws Exception { // test case for IVY-501 // here we test maven SNAPSHOT versions handling, diff --git a/test/repositories/parentPom/org/apache/dm/parent/2.0/parent-2.0.pom b/test/repositories/parentPom/org/apache/dm/parent/2.0/parent-2.0.pom index c6fd34ba..2d7b66bf 100644 --- a/test/repositories/parentPom/org/apache/dm/parent/2.0/parent-2.0.pom +++ b/test/repositories/parentPom/org/apache/dm/parent/2.0/parent-2.0.pom @@ -28,25 +28,27 @@ parent Test parsing parent POM 2.0 + + 1.0 + - - org.apache.dm - test2 - ${pom.version} - - - org.apache.dm - test4 - 1.0 - + + org.apache.dm + test2 + ${pom.version} + + + org.apache.dm + test4 + ${test4.version} + - + org.apache.dm test3 - diff --git a/test/repositories/parentPom/org/apache/dm/parent2/1.0/parent2-1.0.pom b/test/repositories/parentPom/org/apache/dm/parent2/1.0/parent2-1.0.pom index d7d53cbc..cf0021c6 100644 --- a/test/repositories/parentPom/org/apache/dm/parent2/1.0/parent2-1.0.pom +++ b/test/repositories/parentPom/org/apache/dm/parent2/1.0/parent2-1.0.pom @@ -23,6 +23,9 @@ parent2 Test parsing parent POM 1.0 + + 1.0 + @@ -33,7 +36,13 @@ org.apache.dm test3 + ${test3.version} + + + org.apache.dm + parent3 1.0 + import diff --git a/test/repositories/parentPom/org/apache/dm/parent3/1.0/parent3-1.0.pom b/test/repositories/parentPom/org/apache/dm/parent3/1.0/parent3-1.0.pom new file mode 100644 index 00000000..2bb31dec --- /dev/null +++ b/test/repositories/parentPom/org/apache/dm/parent3/1.0/parent3-1.0.pom @@ -0,0 +1,38 @@ + + + + 4.0.0 + org.apache.dm + parent3 + Test parsing parent POM + 1.0 + + 2.0 + + + + + org.apache.dm + test5 + ${test5.version} + + + + diff --git a/test/repositories/parentPom/org/apache/dm/test/3.0/test-3.0.pom b/test/repositories/parentPom/org/apache/dm/test/3.0/test-3.0.pom new file mode 100644 index 00000000..d9a8107e --- /dev/null +++ b/test/repositories/parentPom/org/apache/dm/test/3.0/test-3.0.pom @@ -0,0 +1,42 @@ + + + + 4.0.0 + + parent + org.apache.dm + 2.0 + + org.apache.dm + test + Test parsing parent POM + 3.0 + http://ant.apache.org/ivy + + Apache + http://www.apache.org/ + + + + org.apache.dm + test5 + + + diff --git a/test/repositories/parentPom/org/apache/dm/test5/1.0/test5-1.0.jar b/test/repositories/parentPom/org/apache/dm/test5/1.0/test5-1.0.jar new file mode 100644 index 00000000..56f3b36e --- /dev/null +++ b/test/repositories/parentPom/org/apache/dm/test5/1.0/test5-1.0.jar @@ -0,0 +1 @@ + diff --git a/test/repositories/parentPom/org/apache/dm/test5/1.0/test5-1.0.pom b/test/repositories/parentPom/org/apache/dm/test5/1.0/test5-1.0.pom new file mode 100644 index 00000000..67eb17fe --- /dev/null +++ b/test/repositories/parentPom/org/apache/dm/test5/1.0/test5-1.0.pom @@ -0,0 +1,26 @@ + + + + 4.0.0 + org.apache.dm + test5 + Test parsing parent POM + 1.0 + diff --git a/test/repositories/parentPom/org/apache/dm/test5/2.0/test5-2.0.jar b/test/repositories/parentPom/org/apache/dm/test5/2.0/test5-2.0.jar new file mode 100644 index 00000000..56f3b36e --- /dev/null +++ b/test/repositories/parentPom/org/apache/dm/test5/2.0/test5-2.0.jar @@ -0,0 +1 @@ + diff --git a/test/repositories/parentPom/org/apache/dm/test5/2.0/test5-2.0.pom b/test/repositories/parentPom/org/apache/dm/test5/2.0/test5-2.0.pom new file mode 100644 index 00000000..a5914d37 --- /dev/null +++ b/test/repositories/parentPom/org/apache/dm/test5/2.0/test5-2.0.pom @@ -0,0 +1,26 @@ + + + + 4.0.0 + org.apache.dm + test5 + Test parsing parent POM + 2.0 +