Ich möchte auf einer Menge von Unterordnern (“log/”, “temp/”, später vielleicht weitere) eines dynamischen Über-Ordners beispielhaft die Rechte auf 777 ändern:
Zuerst definiere ich die Unterordner. Das mache ich nicht mit DirSet und <for>, da ich dann den Pfad nicht mehr mit dem Über-Ordner prefixen kann. Stattdessen nehme ich ein kommasepariertes property und <for>:
1 2 |
<!-- comma separated list: --> <property name="rwfolders.application" value="log/,temp/" /> |
Dann lagere ich das eigentliche chmod und den Loop in eine macrodef aus, um den Über-Ordner übergeben zu können – hier sieht man, was ich mit “prefixen” meine: Ich setze @{basedir} vor jeden Eintrag @{rwFolder} in ${rwfolders.application}
1 2 3 4 5 6 7 8 9 10 11 |
<macrodef name="chmodonrwfolders"> <attribute name="basedir"/> <sequential> <for list="${rwfolders.application}" param="rwFolder"> <sequential> <echo message="Setting mode 777 to folder @{basedir}/@{rwFolder}"/> <chmod dir="@{basedir}/@{rwFolder}" perm="777"/> </sequential> </for> </sequential> </macrodef> |
Übrigens: Anders, als in der Doku beschrieben, reicht Attribut “file” nicht, es muss Attribut “dir” sein!
Und schliesslich der Aufruf mit variablem @{basedir}:
1 |
<chmodonrwfolders basedir="${dir.dist.production}" /> |