# Iterieren mit ANT



## Guest (3. Dez 2008)

Hallo liebe Community,

Ich würde gerne für eine unbestimmte Anzahl an properties eine Aktion ausführen. In meinem konkreten Fall stehen in einer Properties-Datei eine Reihe von VisualSourceSafe Pfaden, die ausgecheckt werden sollen. Ist aber glaube nicht ganz so wichtig. 

Generell möchte ich für alle Properties die ein gewisses Pattern matchen einen subtask ausfühen.


Beispiel Properties Datei:


```
path.vss.folder1     = $/Versionen/MAN/V4.4.0.X freeze/Client
path.vss.folder2     = $/Versionen/MAN/V4.4.0.X freeze/Server
path.vss.folder2     = $/Versionen/EVO/V4.3.0.X/Client
...
/code]

Wie kann ich jetzt für jeden dieser Pfade einen Aufruf analog zu diesem exemplarischen machen?


[code]
        <antcall target="-vssget">
              <param name="server"    value="${path.vss.folder1}" />
        </antcall>
```


Ich hoffe ich habe es verständlich erklärt und vielleicht hat ja wer eine Idee. 


Grüße

Michael


----------



## Wildcard (3. Dez 2008)

in ant-contrib gibt es einen for task.


----------



## Guest (3. Dez 2008)

Danke für den Tipp hab natürlich auch schon was gegoogelt und bin drauf gestoßen, aber irgendwie ist der Task entweder nicht mehr dabei, oder ich bin zu blöd ihn zu benutzten.

Hab mir hier die Sourcen geholt: http://sourceforge.net/project/showfiles.php?group_id=36177

mit ant das Jar erstellt (cpptasks.jar). Das Jar in das Ant Verzeichnis kopiert. Das JAR in eclipse unter Ant->Runtime->Classpath->Ant Home Entreis eingetragen, und in meine build.xml mit 


```
<taskdef resource="cpptasks.tasks"/>
```

eingebunden. 

Das Beispiel:


```
<echo message="The first five letters of the alphabet are:" />
		<for list="a,b,c,d,e" delimiter="," param="letter">
			<sequential>
				<echo>Letter @{letter}</echo>
			</sequential>
		</for>
```

liefert aber trotzdem folgenden Fehler:


```
Buildfile: D:\rd\ar_Tool\BuildProzess\version\build.xml
-init:
-check.propfile:
all:

BUILD FAILED
D:\rd\ar_Tool\BuildProzess\version\build.xml:19: Problem: failed to create task or type versioninfo
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.


Total time: 220 milliseconds
```
[/code]


----------



## Gast (3. Dez 2008)

Ups das war ein anderer Test...


Das ist die Fehlermeldung:


```
Buildfile: D:\rd\ar_Tool\BuildProzess\version\build.xml
-init:
-check.propfile:
all:
     [echo] The first five letters of the alphabet are:

BUILD FAILED
D:\rd\ar_Tool\BuildProzess\version\build.xml:21: Problem: failed to create task or type for
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.


Total time: 219 milliseconds
```


----------



## Wildcard (3. Dez 2008)

Füg mal noch das ein:

```
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
```


----------



## Guest (3. Dez 2008)

Hatte  ich auch schon getestet, mit einem Fehler. Daraufhin hab ich mal in das jar geschaut, da drin ist keine einzige .properties Datei. 

Deshalb habe ich wie hier beschreiben http://ant-contrib.sourceforge.net/cpptasks/index.html die cpptasks.tasks eingebunden (Die existiert auch im Jar).

Irgwndwie sscheint die Doku auf der Seite nicht ganz up to date zu sein...


----------



## Guest (3. Dez 2008)

Was mich ja am meisten wundert, auf der Seite ant-contrib.sourceforge.net/ schreiben sie die ganze Zeit von einem "ant-contrib-0.3.jar".  Der zugehörigen download liefert jedoch kein Jar sondern Sourcen, aus den mittels ANT ein "cpptasks.jar" wird. Da passt doch was nicht zusammen.


----------



## Wildcard (3. Dez 2008)

http://sourceforge.net/project/showfiles.php?group_id=36177&package_id=28636


----------



## Gast (3. Dez 2008)

Vielen Dank, der Link hat geholfen!!


----------



## Guest (3. Dez 2008)

Vielleicht noch ein kleiner Nachtrag für Suchende. Wenn for Schleife erstmal läuft, muss man sich nur noch schnell den propertyselector anschauen und schon hat man alles was man braucht:

http://ant-contrib.sourceforge.net/tasks/tasks/propertyselector.html


----------

