From b852c5bca696b7f971b3240ec8244f4e537f90ec Mon Sep 17 00:00:00 2001 From: Maarten Coene Date: Thu, 16 Sep 2010 22:03:26 +0000 Subject: [PATCH] FIX: Ivy cannot handle Maven pom with parents depending back on theirselfs (IVY-1225) git-svn-id: https://svn.apache.org/repos/asf/ant/ivy/core/trunk@997931 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 1 + .../plugins/parser/m2/PomModuleDescriptorBuilder.java | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index b9352273..75e5dcae 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -127,6 +127,7 @@ for detailed view of each issue, please consult http://issues.apache.org/jira/br - IMPROVEMENT: ivy:makepom now accepts a list of configurations to include (IVY-1005) (thanks to Jesper Pedersen) - IMPROVEMENT: ivy:makepom can generate a element in the pom (IVY-1215) (thanks to Jesper Pedersen) +- FIX: Ivy cannot handle Maven pom with parents depending back on theirselfs (IVY-1225) - FIX: OutOfMemoryError when uploading large files using commons-httpclient (IVY-1197) (thanks to Torkild U. Resheim) - FIX: artifactreport ant task doesn't honor log attribute (IVY-1212) - FIX: XmlModuleDescriptorWriter does not write the transitive attribute (IVY-1207) (thanks to Abel Muino) diff --git a/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java b/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java index bee3f106..92a846c8 100644 --- a/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java +++ b/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java @@ -351,8 +351,16 @@ public class PomModuleDescriptorBuilder { ivyModuleDescriptor.addDependency(dd); } - public void addDependency(DependencyDescriptor descriptor) { + // Some POMs depend on theirselfves through their parent pom, don't add this dependency + // since Ivy doesn't allow this! + // Example: http://repo2.maven.org/maven2/com/atomikos/atomikos-util/3.6.4/atomikos-util-3.6.4.pom + ModuleId dependencyId = descriptor.getDependencyId(); + ModuleRevisionId mRevId = ivyModuleDescriptor.getModuleRevisionId(); + if ((mRevId != null) && mRevId.getModuleId().equals(dependencyId)) { + return; + } + ivyModuleDescriptor.addDependency(descriptor); }