tags:

views:

16

answers:

1

Hi,

all my projects and their versions are defined in a properties file like this:

ProjectNameA=0.0.1
ProjectNameB=1.4.2

I'd like to iterate over all projects and use there names and versions in an ant script. Right now, I read the entire properties file in help of the property task.

Then I iterate over a given list in a for loop like this:

<for list="ProjectNameA,ProjectNameB" param="project">
   <sequential>
    <echo message="@{project} has version ${@{project}}" />
   </sequential>
</for>

How can I avoid the duplication of the project names in the for loop. So basically iterate over each line and extract the name and the version of a project.

Thanks.

+1  A: 

Seeing as you're already using antcontrib for, how about making use of propertyselector in this way:

<property file="properties.txt" prefix="projects."/>
<propertyselector property="projects" match="projects\.(.*)" select="\1"/>

<property file="properties.txt" />
<for list="${projects}" param="project">
    ...
</for>

The idea is to read the properties once with the projects prefix, and use the resulting set of properties to build the comma-separated list of projects. Then the properties are re-read without the prefix, so that your for loop can proceed as before.

martin clayton