Here is a example (beanshell rocks!):
<project name="loop" xmlns:ac="antlib:net.sf.antcontrib">
<script language="beanshell">
import java.util.Iterator;
public class Loop implements Iterator {
private int begin = 0;
private int end = 10;
private int curr = 0;
public void setBegin(int b) {
begin = b;
curr = b;
}
public void setEnd(int e) {
end = e;
}
public Iterator iterator() {
return this;
}
public boolean hasNext() {
return curr < end;
}
public Object next() {
Integer ret = new Integer(curr);
curr = curr + 1;
return ret;
}
public void remove() {
}
}
project.addDataTypeDefinition("loop", Loop.class);
</script>
<ac:for param="val">
<loop end="5"/>
<sequential>
<echo message = "val = @{val}"/>
</sequential>
</ac:for>
</project>
This outputs:
C:\work\test>ant -f for.xml
UserLib is C:\Documents and Settings\reilly\.ant\lib
Buildfile: for.xml
[echo] val = 0
[echo] val = 1
[echo] val = 2
[echo] val = 3
[echo] val = 4
BUILD SUCCESSFUL
Peter
On 6/7/06, Dominique Devienne <[EMAIL PROTECTED]> wrote:
Ant-Contrib's <for> accepts any type which exposes an iterator()
method I believe, so you'd have to write a Java task or <scriptdef> to
create such an <integer-range> type.
You could also try a recursive <macro> or <antcall> (with proper
stopping condition ;-) that writes the numbers to a file, and then
<loadfile> it.
Using a little <script> to generate the series in a property would
probably be easier though. --DD
On 6/7/06, Guru Balse <[EMAIL PROTECTED]> wrote:
> I am sure this question has been asked before, and I could not see any
> reasonable answer in the archives. How can I implement a loop in ANT
> without using scripts? For example, if I want to call a certain target
> N times, how can I do it?
>
> Using ant-contrib is OK. Of course, something like <for
> list="1,2,3,4,5,6,...,N"> would work but I want N to be a property that
> can be specified in the command line.
>
> Thanks in advance for your suggestions.
>
> - Guru Balse
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]