Properties are immutable. Run the build file with -verbose and you will probably see that count is not being updated because it is already set. Once set a property will not be set a different value.

That said, I think there is a way to use ant-contrib to do this. Look at the math property task of ant-contrib. There you will see examples of using a var to do the math. In your case use a var in the loop then assign the value to count as the last thing you do in the task.

HTH Bill

broken connection wrote:
Hi Friends,
Is there any way to control iteration in ant. I want to put an if-else
condition in the for loop to control the action depending upon the iteration
count.I tried this:

build.xml
<project name="test" default="test_iteration">
<taskdef resource="net/sf/antcontrib/antlib.xml" />
 <property name="prop_file" value="value.properties"/>

<target name="test_iteration">
<property file="${prop_file}"/>

<for list="1,2" param="argvalue" >
   <sequential>
      <!-- use property file to increment counter -->
      <propertyfile file="value.properties">
          <entry key="count" type="int" operation="+" value="1" />
      </propertyfile>

  <echo>counter: ${count}</echo>

   </sequential>
</for>

</target>
</project>

value.properties file:
count=0

After I execute this,I get this as output:

C:\Documents and Settings\Desktop\test>ant
Buildfile: build.xml

test_iteration:
[propertyfile] Updating property file: C:\Documents and
Settings\hjhutty\Desktop
\test\value.properties
    [echo] counter: 0
[propertyfile] Updating property file: C:\Documents and
Settings\hjhutty\Desktop
\test\value.properties
    [echo] counter: 0

BUILD SUCCESSFUL
Total time: 1 second

value.properties=2

Can somebody explain me,why ${count} still displays 0 in the second
iteration,though the properties file has been updated.

Please help.
Thanks

Reply via email to