Hi Ivy devs, You may have noticed over the past several days that I have committed some m2-related fixes, specifically:
https://issues.apache.org/jira/browse/IVY-1299 https://issues.apache.org/jira/browse/IVY-1301 Both of these issues related to overriding parent properties that specified dependency versions, and I had to do some strange gymnastics to make this work. A code review by more experienced eyes would probably be best. Thanks, Matt On Tue, Jun 7, 2011 at 1:34 PM, <mben...@apache.org> wrote: > Author: mbenson > Date: Tue Jun 7 18:34:01 2011 > New Revision: 1133126 > > URL: http://svn.apache.org/viewvc?rev=1133126&view=rev > Log: > [IVY-1301] Ivy does not apply overridden properties to parent dependency > versions specified using dependencyManagement properties > > Added: > > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-overrideParentVersionPropertyDependencyMgt.pom > > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-versionPropertyDependencyMgt.pom > Modified: > > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java > > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java > ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java > > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java > > Modified: > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java > URL: > http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java?rev=1133126&r1=1133125&r2=1133126&view=diff > ============================================================================== > --- > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java > (original) > +++ > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java > Tue Jun 7 18:34:01 2011 > @@ -184,7 +184,7 @@ public class PomModuleDescriptorBuilder > > > > - private final DefaultModuleDescriptor ivyModuleDescriptor; > + private final PomModuleDescriptor ivyModuleDescriptor; > > > private ModuleRevisionId mrid; > @@ -199,7 +199,7 @@ public class PomModuleDescriptorBuilder > > public PomModuleDescriptorBuilder( > ModuleDescriptorParser parser, Resource res, ParserSettings > ivySettings) { > - ivyModuleDescriptor = new DefaultModuleDescriptor(parser, res); > + ivyModuleDescriptor = new PomModuleDescriptor(parser, res); > ivyModuleDescriptor.setResolvedPublicationDate(new > Date(res.getLastModified())); > for (int i = 0; i < MAVEN2_CONFIGURATIONS.length; i++) { > ivyModuleDescriptor.addConfiguration(MAVEN2_CONFIGURATIONS[i]); > @@ -365,6 +365,8 @@ public class PomModuleDescriptorBuilder > > > public void addDependencyMgt(PomDependencyMgt dep) { > + ivyModuleDescriptor.addDependencyManagement(dep); > + > String key = getDependencyMgtExtraInfoKeyForVersion(dep.getGroupId(), > dep.getArtifactId()); > ivyModuleDescriptor.addExtraInfo(key, dep.getVersion()); > if (dep.getScope() != null) { > @@ -450,13 +452,25 @@ public class PomModuleDescriptorBuilder > } > > private String getDefaultVersion(PomDependencyData dep) { > + ModuleId moduleId = ModuleId.newInstance(dep.getGroupId(), > dep.getArtifactId()); > + if > (ivyModuleDescriptor.getDependencyManagementMap().containsKey(moduleId)) { > + return ((PomDependencyMgt) > ivyModuleDescriptor.getDependencyManagementMap().get( > + moduleId)).getVersion(); > + } > String key = getDependencyMgtExtraInfoKeyForVersion(dep.getGroupId(), > dep.getArtifactId()); > return (String) ivyModuleDescriptor.getExtraInfo().get(key); > } > > private String getDefaultScope(PomDependencyData dep) { > - String key = getDependencyMgtExtraInfoKeyForScope(dep.getGroupId(), > dep.getArtifactId()); > - String result = (String) ivyModuleDescriptor.getExtraInfo().get(key); > + String result; > + ModuleId moduleId = ModuleId.newInstance(dep.getGroupId(), > dep.getArtifactId()); > + if > (ivyModuleDescriptor.getDependencyManagementMap().containsKey(moduleId)) { > + result = ((PomDependencyMgt) > ivyModuleDescriptor.getDependencyManagementMap().get( > + moduleId)).getScope(); > + } else { > + String key = > getDependencyMgtExtraInfoKeyForScope(dep.getGroupId(), dep.getArtifactId()); > + result = (String) ivyModuleDescriptor.getExtraInfo().get(key); > + } > if ((result == null) || !MAVEN2_CONF_MAPPING.containsKey(result)) { > result = "compile"; > } > @@ -488,6 +502,13 @@ public class PomModuleDescriptorBuilder > ModuleDescriptor descriptor, > String groupId, > String artifactId) { > + if (descriptor instanceof PomModuleDescriptor) { > + PomDependencyMgt dependencyMgt = (PomDependencyMgt) > ((PomModuleDescriptor) descriptor) > + > .getDependencyManagementMap().get(ModuleId.newInstance(groupId, artifactId)); > + if (dependencyMgt != null) { > + return dependencyMgt.getExcludedModules(); > + } > + } > String exclusionPrefix = getDependencyMgtExtraInfoPrefixForExclusion( > groupId, artifactId); > List /*<ModuleId>*/ exclusionIds = new LinkedList /*<ModuleId>*/ (); > @@ -506,23 +527,30 @@ public class PomModuleDescriptorBuilder > exclusionIds.add(ModuleId.newInstance(exclusionParts[0], > exclusionParts[1])); > } > } > - > return exclusionIds; > } > > public static Map/*<ModuleId, String version>*/ > getDependencyManagementMap(ModuleDescriptor md) { > Map ret = new LinkedHashMap(); > - for (Iterator iterator = md.getExtraInfo().entrySet().iterator(); > iterator.hasNext();) { > - Map.Entry entry = (Map.Entry) iterator.next(); > - String key = (String) entry.getKey(); > - if ((key).startsWith(DEPENDENCY_MANAGEMENT)) { > - String[] parts = key.split(EXTRA_INFO_DELIMITER); > - if (parts.length != DEPENDENCY_MANAGEMENT_KEY_PARTS_COUNT) { > - Message.warn("what seem to be a dependency management > extra info " > - + "doesn't match expected pattern: " + key); > - } else { > - ret.put(ModuleId.newInstance(parts[1], parts[2]), > entry.getValue()); > + if (md instanceof PomModuleDescriptor) { > + for (final Iterator iterator = ((PomModuleDescriptor) > md).getDependencyManagementMap().entrySet().iterator(); iterator.hasNext();) { > + Map.Entry e = (Entry) iterator.next(); > + PomDependencyMgt dependencyMgt = (PomDependencyMgt) > e.getValue(); > + ret.put(e.getKey(), dependencyMgt.getVersion()); > + } > + } else { > + for (Iterator iterator = > md.getExtraInfo().entrySet().iterator(); iterator.hasNext();) { > + Map.Entry entry = (Map.Entry) iterator.next(); > + String key = (String) entry.getKey(); > + if ((key).startsWith(DEPENDENCY_MANAGEMENT)) { > + String[] parts = key.split(EXTRA_INFO_DELIMITER); > + if (parts.length != > DEPENDENCY_MANAGEMENT_KEY_PARTS_COUNT) { > + Message.warn("what seem to be a dependency > management extra info " > + + "doesn't match expected pattern: " + key); > + } else { > + ret.put(ModuleId.newInstance(parts[1], parts[2]), > entry.getValue()); > + } > } > } > } > @@ -532,34 +560,37 @@ public class PomModuleDescriptorBuilder > public static List getDependencyManagements(ModuleDescriptor md) { > List result = new ArrayList(); > > - for (Iterator iterator = md.getExtraInfo().entrySet().iterator(); > iterator.hasNext();) { > - Map.Entry entry = (Map.Entry) iterator.next(); > - String key = (String) entry.getKey(); > - if ((key).startsWith(DEPENDENCY_MANAGEMENT)) { > - String[] parts = key.split(EXTRA_INFO_DELIMITER); > - if (parts.length != DEPENDENCY_MANAGEMENT_KEY_PARTS_COUNT) { > - Message.warn("what seem to be a dependency management > extra info " > - + "doesn't match expected pattern: " + key); > - } else { > - String versionKey = DEPENDENCY_MANAGEMENT + > EXTRA_INFO_DELIMITER + parts[1] > - + EXTRA_INFO_DELIMITER + parts[2] > - + EXTRA_INFO_DELIMITER + "version"; > - String scopeKey = DEPENDENCY_MANAGEMENT + > EXTRA_INFO_DELIMITER + parts[1] > - + EXTRA_INFO_DELIMITER + parts[2] > - + EXTRA_INFO_DELIMITER + "scope"; > - > - String version = (String) > md.getExtraInfo().get(versionKey); > - String scope = (String) md.getExtraInfo().get(scopeKey); > - > - List /*<ModuleId>*/ exclusions = > getDependencyMgtExclusions(md, parts[1], parts[2]); > - result.add(new DefaultPomDependencyMgt(parts[1], > parts[2], version, scope, exclusions)); > + if (md instanceof PomModuleDescriptor) { > + result.addAll(((PomModuleDescriptor) > md).getDependencyManagementMap().values()); > + } else { > + for (Iterator iterator = > md.getExtraInfo().entrySet().iterator(); iterator.hasNext();) { > + Map.Entry entry = (Map.Entry) iterator.next(); > + String key = (String) entry.getKey(); > + if ((key).startsWith(DEPENDENCY_MANAGEMENT)) { > + String[] parts = key.split(EXTRA_INFO_DELIMITER); > + if (parts.length != > DEPENDENCY_MANAGEMENT_KEY_PARTS_COUNT) { > + Message.warn("what seem to be a dependency > management extra info " > + + "doesn't match expected pattern: " + key); > + } else { > + String versionKey = DEPENDENCY_MANAGEMENT + > EXTRA_INFO_DELIMITER + parts[1] > + + EXTRA_INFO_DELIMITER + parts[2] > + + EXTRA_INFO_DELIMITER + > "version"; > + String scopeKey = DEPENDENCY_MANAGEMENT + > EXTRA_INFO_DELIMITER + parts[1] > + + EXTRA_INFO_DELIMITER + parts[2] > + + EXTRA_INFO_DELIMITER + "scope"; > + > + String version = (String) > md.getExtraInfo().get(versionKey); > + String scope = (String) > md.getExtraInfo().get(scopeKey); > + > + List /*<ModuleId>*/ exclusions = > getDependencyMgtExclusions(md, parts[1], parts[2]); > + result.add(new DefaultPomDependencyMgt(parts[1], > parts[2], version, scope, exclusions)); > + } > } > } > } > - > return result; > } > - > + > > public void addExtraInfos(Map extraAttributes) { > for (Iterator it = extraAttributes.entrySet().iterator(); > it.hasNext();) { > @@ -651,4 +682,20 @@ public class PomModuleDescriptorBuilder > return pomDependencyData; > } > } > + > + public static class PomModuleDescriptor extends DefaultModuleDescriptor { > + private final Map/*<ModuleId, PomDependencyMgt>*/ > dependencyManagementMap = new HashMap(); > + > + public PomModuleDescriptor(ModuleDescriptorParser parser, Resource > res) { > + super(parser, res); > + } > + > + public void addDependencyManagement(PomDependencyMgt dependencyMgt) { > + > dependencyManagementMap.put(ModuleId.newInstance(dependencyMgt.getGroupId(), > dependencyMgt.getArtifactId()), dependencyMgt); > + } > + > + public Map getDependencyManagementMap() { > + return dependencyManagementMap; > + } > + } > } > > Modified: > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java > URL: > http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java?rev=1133126&r1=1133125&r2=1133126&view=diff > ============================================================================== > --- > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java > (original) > +++ > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java > Tue Jun 7 18:34:01 2011 > @@ -46,6 +46,7 @@ import org.apache.ivy.plugins.parser.Mod > import org.apache.ivy.plugins.parser.ParserSettings; > import > org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.PomDependencyDescriptor; > import org.apache.ivy.plugins.parser.m2.PomReader.PomDependencyData; > +import org.apache.ivy.plugins.parser.m2.PomReader.PomDependencyMgtElement; > import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorWriter; > import org.apache.ivy.plugins.repository.Resource; > import org.apache.ivy.plugins.repository.url.URLResource; > @@ -221,7 +222,11 @@ public final class PomModuleDescriptorPa > // add dependency management info from parent > List depMgt = > PomModuleDescriptorBuilder.getDependencyManagements(parentDescr); > for (Iterator it = depMgt.iterator(); it.hasNext();) { > - mdBuilder.addDependencyMgt((PomDependencyMgt) > it.next()); > + PomDependencyMgt dep = (PomDependencyMgt) it.next(); > + if (dep instanceof PomDependencyMgtElement) { > + dep = domReader.new > PomDependencyMgtElement((PomDependencyMgtElement) dep); > + } > + mdBuilder.addDependencyMgt(dep); > } > > // add plugins from parent > > Modified: > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java > URL: > http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java?rev=1133126&r1=1133125&r2=1133126&view=diff > ============================================================================== > --- > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java > (original) > +++ > ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java > Tue Jun 7 18:34:01 2011 > @@ -294,6 +294,10 @@ public class PomReader { > public class PomDependencyMgtElement implements PomDependencyMgt { > private final Element depElement; > > + public PomDependencyMgtElement(PomDependencyMgtElement copyFrom) { > + this(copyFrom.depElement); > + } > + > PomDependencyMgtElement(Element depElement) { > this.depElement = depElement; > } > > Modified: > ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java > URL: > http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java?rev=1133126&r1=1133125&r2=1133126&view=diff > ============================================================================== > --- ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java > (original) > +++ ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java > Tue Jun 7 18:34:01 2011 > @@ -4326,14 +4326,24 @@ public class ResolveTest extends TestCas > IvyNode ivyNode; > ivyNode = (IvyNode) dependencies.get(0); > assertNotNull(ivyNode); > - mrid = ModuleRevisionId.newInstance("org.apache.dm", "test2", "2.0"); > + > +// Bad assertions based on IVY-1301 bug, corrected below: > +// mrid = ModuleRevisionId.newInstance("org.apache.dm", "test2", > "2.0"); > +// assertEquals(mrid, ivyNode.getId()); > +// // dependencies > +// assertTrue(getIvyFileInCache( > +// ModuleRevisionId.newInstance("org.apache.dm", "test2", > "2.0")).exists()); > +// assertTrue(getArchiveFileInCache(ivy, "org.apache.dm", "test2", > "2.0", > +// "test2", "jar", "jar").exists()); > + > + mrid = ModuleRevisionId.newInstance("org.apache.dm", "test2", "1.0"); > assertEquals(mrid, ivyNode.getId()); > // dependencies > assertTrue(getIvyFileInCache( > - ModuleRevisionId.newInstance("org.apache.dm", "test2", > "2.0")).exists()); > - assertTrue(getArchiveFileInCache(ivy, "org.apache.dm", "test2", > "2.0", > + ModuleRevisionId.newInstance("org.apache.dm", "test2", > "1.0")).exists()); > + assertTrue(getArchiveFileInCache(ivy, "org.apache.dm", "test2", > "1.0", > "test2", "jar", "jar").exists()); > - > + > ivyNode = (IvyNode) dependencies.get(1); > assertNotNull(ivyNode); > mrid = ModuleRevisionId.newInstance("org.apache.dm", "test3", "1.0"); > @@ -4423,14 +4433,24 @@ public class ResolveTest extends TestCas > IvyNode ivyNode; > ivyNode = (IvyNode) dependencies.get(0); > assertNotNull(ivyNode); > - mrid = ModuleRevisionId.newInstance("org.apache.dm", "test2", "2.0"); > + > +// Bad assertions based on IVY-1301 bug, corrected below: > +// mrid = ModuleRevisionId.newInstance("org.apache.dm", "test2", > "2.0"); > +// assertEquals(mrid, ivyNode.getId()); > +// // dependencies > +// assertTrue(getIvyFileInCache( > +// ModuleRevisionId.newInstance("org.apache.dm", "test2", > "2.0")).exists()); > +// assertTrue(getArchiveFileInCache(ivy, "org.apache.dm", "test2", > "2.0", > +// "test2", "jar", "jar").exists()); > + > + mrid = ModuleRevisionId.newInstance("org.apache.dm", "test2", "1.0"); > assertEquals(mrid, ivyNode.getId()); > // dependencies > assertTrue(getIvyFileInCache( > - ModuleRevisionId.newInstance("org.apache.dm", "test2", > "2.0")).exists()); > - assertTrue(getArchiveFileInCache(ivy, "org.apache.dm", "test2", > "2.0", > + ModuleRevisionId.newInstance("org.apache.dm", "test2", > "1.0")).exists()); > + assertTrue(getArchiveFileInCache(ivy, "org.apache.dm", "test2", > "1.0", > "test2", "jar", "jar").exists()); > - > + > ivyNode = (IvyNode) dependencies.get(1); > assertNotNull(ivyNode); > mrid = ModuleRevisionId.newInstance("org.apache.dm", "test3", "1.0"); > > Modified: > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java > URL: > http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java?rev=1133126&r1=1133125&r2=1133126&view=diff > ============================================================================== > --- > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java > (original) > +++ > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java > Tue Jun 7 18:34:01 2011 > @@ -675,6 +675,42 @@ public class PomModuleDescriptorParserTe > assertEquals("jms", excludes[1].getId().getModuleId().getName()); > } > > + public void testOverrideParentVersionPropertyDependencyMgt() throws > ParseException, IOException { > + settings.setDictatorResolver(new MockResolver() { > + public ResolvedModuleRevision getDependency(DependencyDescriptor > dd, ResolveData data) throws ParseException { > + try { > + ModuleDescriptor moduleDescriptor = > PomModuleDescriptorParser.getInstance().parseDescriptor( > + settings, > getClass().getResource("test-versionPropertyDependencyMgt.pom"), false); > + return new > ResolvedModuleRevision(null,null,moduleDescriptor,null); > + } catch (IOException e) { > + throw new AssertionError(e); > + } > + } > + }); > + > + ModuleDescriptor md = > PomModuleDescriptorParser.getInstance().parseDescriptor( > + settings, > getClass().getResource("test-overrideParentVersionPropertyDependencyMgt.pom"), > false); > + assertNotNull(md); > + assertEquals(ModuleRevisionId.newInstance("org.apache", > "test-parentdep", "1.0"), md > + .getModuleRevisionId()); > + > + DependencyDescriptor[] dds = md.getDependencies(); > + assertNotNull(dds); > + assertEquals(2, dds.length); > + assertEquals(ModuleRevisionId.newInstance("commons-collections", > "commons-collections", "3.2.1"), > + dds[0].getDependencyRevisionId()); > + assertEquals(ModuleRevisionId.newInstance("commons-logging", > "commons-logging", "1.1.1"), > + dds[1].getDependencyRevisionId()); > + > + ExcludeRule[] excludes = dds[0].getAllExcludeRules(); > + assertNotNull(excludes); > + assertEquals(2, excludes.length); > + assertEquals("javax.mail", > excludes[0].getId().getModuleId().getOrganisation()); > + assertEquals("mail", excludes[0].getId().getModuleId().getName()); > + assertEquals("javax.jms", > excludes[1].getId().getModuleId().getOrganisation()); > + assertEquals("jms", excludes[1].getId().getModuleId().getName()); > + } > + > public void testParentProperties() throws ParseException, IOException { > settings.setDictatorResolver(new MockResolver() { > public ResolvedModuleRevision getDependency(DependencyDescriptor > dd, ResolveData data) throws ParseException { > > Added: > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-overrideParentVersionPropertyDependencyMgt.pom > URL: > http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-overrideParentVersionPropertyDependencyMgt.pom?rev=1133126&view=auto > ============================================================================== > --- > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-overrideParentVersionPropertyDependencyMgt.pom > (added) > +++ > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-overrideParentVersionPropertyDependencyMgt.pom > Tue Jun 7 18:34:01 2011 > @@ -0,0 +1,46 @@ > +<?xml version="1.0"?> > +<!-- > + Licensed to the Apache Software Foundation (ASF) under one > + or more contributor license agreements. See the NOTICE file > + distributed with this work for additional information > + regarding copyright ownership. The ASF licenses this file > + 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 > + KIND, either express or implied. See the License for the > + specific language governing permissions and limitations > + under the License. > +--> > +<project> > + <modelVersion>4.0.0</modelVersion> > + <parent> > + <artifactId>test-depMgt</artifactId> > + <groupId>org.apache</groupId> > + <version>1.0</version> > + </parent> > + <groupId>org.apache</groupId> > + <artifactId>test-parentdep</artifactId> > + <name>Test Module for Ivy M2 parsing</name> > + <version>1.0</version> > + <url>http://ivy.jayasoft.org/</url> > + <organization> > + <name>Jayasoft</name> > + <url>http://www.jayasoft.org/</url> > + </organization> > + <properties> > + <commons.logging.version>1.1.1</commons.logging.version> > + <commons.collections.version>3.2.1</commons.collections.version> > + </properties> > + <dependencies> > + <dependency> > + <groupId>commons-collections</groupId> > + <artifactId>commons-collections</artifactId> > + </dependency> > + </dependencies> > +</project> > > Added: > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-versionPropertyDependencyMgt.pom > URL: > http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-versionPropertyDependencyMgt.pom?rev=1133126&view=auto > ============================================================================== > --- > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-versionPropertyDependencyMgt.pom > (added) > +++ > ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-versionPropertyDependencyMgt.pom > Tue Jun 7 18:34:01 2011 > @@ -0,0 +1,65 @@ > +<?xml version="1.0"?> > +<!-- > + Licensed to the Apache Software Foundation (ASF) under one > + or more contributor license agreements. See the NOTICE file > + distributed with this work for additional information > + regarding copyright ownership. The ASF licenses this file > + 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 > + KIND, either express or implied. See the License for the > + specific language governing permissions and limitations > + under the License. > +--> > +<project> > + <modelVersion>4.0.0</modelVersion> > + <groupId>org.apache</groupId> > + <artifactId>test-depMgt</artifactId> > + <name>Test Module for Ivy M2 parsing</name> > + <version>1.0</version> > + <url>http://ivy.jayasoft.org/</url> > + <organization> > + <name>Jayasoft</name> > + <url>http://www.jayasoft.org/</url> > + </organization> > + <properties> > + <commons.logging.version>1.0.4</commons.logging.version> > + <commons.collections.version>1.0.5</commons.collections.version> > + </properties> > + <dependencyManagement> > + <dependencies> > + <dependency> > + <groupId>commons-logging</groupId> > + <artifactId>commons-logging</artifactId> > + <version>${commons.logging.version}</version> > + </dependency> > + <dependency> > + <groupId>commons-collections</groupId> > + <artifactId>commons-collections</artifactId> > + <version>${commons.collections.version}</version> > + <exclusions> > + <exclusion> > + <groupId>javax.mail</groupId> > + <artifactId>mail</artifactId> > + </exclusion> > + <exclusion> > + <groupId>javax.jms</groupId> > + <artifactId>jms</artifactId> > + </exclusion> > + </exclusions> > + </dependency> > + </dependencies> > + </dependencyManagement> > + <dependencies> > + <dependency> > + <groupId>commons-logging</groupId> > + <artifactId>commons-logging</artifactId> > + </dependency> > + </dependencies> > +</project> > > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org