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>