From cbffbc5882e012c707fbca5847eb8ed6854dd607 Mon Sep 17 00:00:00 2001 From: Xavier Hanin Date: Wed, 15 Feb 2006 02:53:29 +0000 Subject: [PATCH] IMPROVE: ivy now supports ${pom.version} in poms (IVY-174) git-svn-id: https://svn.apache.org/repos/asf/incubator/ivy/trunk@484210 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 1 + .../ivy/external/m2/PomModuleDescriptorParser.java | 5 ++++- .../external/m2/PomModuleDescriptorParserTest.java | 12 ++++++++++++ .../jayasoft/ivy/external/m2/test-properties.pom | 14 ++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 test/java/fr/jayasoft/ivy/external/m2/test-properties.pom diff --git a/CHANGES.txt b/CHANGES.txt index 891193de..77d6bb8b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,4 @@ +- IMPROVE: ivy now supports ${pom.version} in poms (IVY-174) - IMPROVE: adds the possibility to disable concistency check (IVY-163) - IMPROVE: add possibility to choose matcher on include exclude and conflict manager rules in ivy files, and on resolver per module in ivyconf (IVY-161) - IMPROVE: add regexp management in the install ant task (IVY-154) diff --git a/src/java/fr/jayasoft/ivy/external/m2/PomModuleDescriptorParser.java b/src/java/fr/jayasoft/ivy/external/m2/PomModuleDescriptorParser.java index c73ce2d9..af4af3a7 100644 --- a/src/java/fr/jayasoft/ivy/external/m2/PomModuleDescriptorParser.java +++ b/src/java/fr/jayasoft/ivy/external/m2/PomModuleDescriptorParser.java @@ -37,6 +37,7 @@ import fr.jayasoft.ivy.matcher.ExactPatternMatcher; import fr.jayasoft.ivy.matcher.PatternMatcher; import fr.jayasoft.ivy.parser.AbstractModuleDescriptorParser; import fr.jayasoft.ivy.repository.Resource; +import fr.jayasoft.ivy.util.IvyPatternHelper; import fr.jayasoft.ivy.util.Message; import fr.jayasoft.ivy.util.XMLHelper; import fr.jayasoft.ivy.xml.XmlModuleDescriptorWriter; @@ -72,6 +73,7 @@ public class PomModuleDescriptorParser extends AbstractModuleDescriptorParser { private boolean _optional = false; private List _exclusions = new ArrayList(); private DefaultDependencyDescriptor _dd; + private Map _properties = new HashMap(); public Parser(Ivy ivy, Resource res) { _ivy = ivy; @@ -100,6 +102,7 @@ public class PomModuleDescriptorParser extends AbstractModuleDescriptorParser { public void endElement(String uri, String localName, String qName) throws SAXException { if ((_organisation != null && _module != null && _revision != null) && _md.getModuleRevisionId() == null) { ModuleRevisionId mrid = ModuleRevisionId.newInstance(_organisation, _module, _revision); + _properties.put("pom.version", _revision); _md.setModuleRevisionId(mrid); _md.addArtifact("master", new DefaultArtifact(mrid, getDefaultPubDate(),_module, "jar", "jar")); _organisation = null; @@ -152,7 +155,7 @@ public class PomModuleDescriptorParser extends AbstractModuleDescriptorParser { } public void characters(char[] ch, int start, int length) throws SAXException { - String txt = new String(ch, start, length).trim(); + String txt = IvyPatternHelper.substituteVariables(new String(ch, start, length).trim(), _properties); String context = getContext(); if (_md.getModuleRevisionId() == null || context.startsWith("project/dependencies/dependency")) { if (_organisation == null && context.endsWith("groupId")) { diff --git a/test/java/fr/jayasoft/ivy/external/m2/PomModuleDescriptorParserTest.java b/test/java/fr/jayasoft/ivy/external/m2/PomModuleDescriptorParserTest.java index ca5eafcd..464f58df 100644 --- a/test/java/fr/jayasoft/ivy/external/m2/PomModuleDescriptorParserTest.java +++ b/test/java/fr/jayasoft/ivy/external/m2/PomModuleDescriptorParserTest.java @@ -57,6 +57,18 @@ public class PomModuleDescriptorParserTest extends AbstractModuleDescriptorParse assertEquals(ModuleRevisionId.newInstance("commons-logging", "commons-logging", "1.0.4"), dds[0].getDependencyRevisionId()); } + public void testProperties() throws Exception { + ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor(new Ivy(), getClass().getResource("test-properties.pom"), false); + assertNotNull(md); + + assertEquals(ModuleRevisionId.newInstance("drools", "drools-smf", "2.0-beta-18"), md.getModuleRevisionId()); + + DependencyDescriptor[] dds = md.getDependencies(); + assertNotNull(dds); + assertEquals(1, dds.length); + assertEquals(ModuleRevisionId.newInstance("drools", "drools-core", "2.0-beta-18"), dds[0].getDependencyRevisionId()); + } + public void testReal() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor(new Ivy(), getClass().getResource("commons-lang-1.0.pom"), false); assertNotNull(md); diff --git a/test/java/fr/jayasoft/ivy/external/m2/test-properties.pom b/test/java/fr/jayasoft/ivy/external/m2/test-properties.pom new file mode 100644 index 00000000..858a0e54 --- /dev/null +++ b/test/java/fr/jayasoft/ivy/external/m2/test-properties.pom @@ -0,0 +1,14 @@ + + 4.0.0 + drools + drools-smf + Drools :: Semantics Module Framework + 2.0-beta-18 + + + drools + drools-core + ${pom.version} + + + \ No newline at end of file