2009-07-19 13 views
5

Próbuję utworzyć rozdzielaną przecinkami listę plików lub katalogów w bieżącym katalogu. Na przykład załóżmy, że mam następującą strukturę folderów: „directory1, katalog2”Generowanie listy plików rozdzielanych przecinkami za pomocą Ant

 
Root 
-- Directory1 
-- Directory2 
... 

Chcę, aby wygenerować zmienną lub właściwość, że zawierają Próbowałem iteracji (przy użyciu ant-contrib "dla" zadania) ponad <dirset dir="." includes="*">, ale generuje to bezwzględne ścieżki; Następnie wyodrębniłem nazwy plików za pomocą zadania "basename", ale z kolei wygenerowano wyjściową właściwość . Ponieważ właściwości są niezmienne, dostaję w praktyce "Directory1, Directory1, ..."

Czy jest to lepszy sposób, czy też będę musiał napisać rozszerzenie Java, aby zrobić to za mnie?

Odpowiedz

10

Zadaniem pathconvert może być używany do formatowania dirset z dowolnych separatorów:

<dirset id="dirs" dir="." includes="*"/> 
<pathconvert dirsep="/" pathsep="," property="dirs" refid="dirs"/> 
<echo message="${dirs}"/> 
+0

Zrobiłem trochę więcej wysiłku (używając globmapper i kilku innych drobnych hacków) i jestem pewien, że w swoim przykładzie zmieniłeś direppa na pathsep, ale wskazałeś mi dokładnie w tym kierunku, jakiego potrzebowałem. Dzięki! –

+0

wygląda tak, jak wartości "dirsep" i "pathsep" są zamieniane. Myślę, że chodziło Ci o dirsep = "/" pathsep = "," – iTake

4

Tylko potwierdzający odpowiedź Jorn było dokładnie to, co potrzebne (jako punkt wyjścia), jak również.

<dirset id="dirset.sandbox" dir="${sandbox.dir}" includes="*"> 
    <exclude name="output"/> 
</dirset> 
<pathconvert pathsep=" " property="dirs.sandbox" refid="dirset.sandbox"> 
    <mapper type="flatten"/> 
</pathconvert> 
<echo message="[*** the sandbox dir list is ${dirs.sandbox} ***]"/> 

sandbox.dir jest bezwzględną ścieżką podobną do/root/build/workspace i zawiera kilka podkatalogów. Dane wyjściowe są rozdzielonymi spacjami listami tych katalogów.

Powiązane problemy