diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java b/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java index 73fa09360..745fecfe8 100644 --- a/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java +++ b/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java @@ -58,24 +58,36 @@ public class AntVersion implements Condition { if (null == atLeast && null == exactly) { throw new BuildException("One of atleast or exactly must be set."); } + try { + if (atLeast != null) { + new DeweyDecimal(atLeast); + } else { + new DeweyDecimal(exactly); + } + } catch (NumberFormatException e) { + throw new BuildException("The argument is not a Dewey Decimal eg 1.1.0"); + } } - + private DeweyDecimal getVersion() { Project p = new Project(); p.init(); - String versionString = p.getProperty("ant.version"); - String v = versionString.substring(versionString.indexOf("Ant version")+12, - versionString.indexOf("Ant version")+17); - char[] cs = v.toCharArray(); - int end = cs.length; - for (int i = cs.length; i > 0; i--) { - if (!Character.isLetter(cs[i-1])) { - end = i; + char[] versionString = p.getProperty("ant.version").toCharArray(); + StringBuffer sb = new StringBuffer(); + boolean foundFirstDigit = false; + for (int i=0; i