How can I use something like an array or list in Ant?

Piyush picture Piyush · Sep 5, 2011 · Viewed 18.9k times · Source

I have a list of strings (e.g. "piyush,kumar") in an Ant script for which I want to assign piyush to var1 like <var name="var1" value="piyush"/> and kumar to var2 like <var name="var2" value="kumar"/>.

So far, I'm using a buildfile like the following:

<?xml version="1.0"?>
<project name="cutter" default="cutter">
<target name="cutter">
<for list="piyush,kumar" param="letter">
  <sequential>
    <echo>var1 @{letter}</echo>
  </sequential>
</for>
</target>
</project>

I'm not sure how to progress this - any suggestions?

Answer

martin clayton picture martin clayton · Sep 5, 2011

Here's an example using an ant-contrib variable and the math task:

<var name="index" value="1"/>
<for list="piyush,kumar" param="letter">
  <sequential>
    <property name="var${index}" value="@{letter}" />
    <math result="index" operand1="${index}" operation="+" operand2="1" datatype="int" />
  </sequential>
</for>

<echoproperties prefix="var" />

Output:

[echoproperties] var1=piyush
[echoproperties] var2=kumar

This is all very un-Ant like though - once you've set these what are you going to do with them?

You might consider using an Ant script task instead for this sort of non-declarative processing.