2009-07-19 8 views
5

現在のディレクトリの下にカンマ区切りのファイルまたはディレクトリのリストを作成しようとしています。たとえば、次のフォルダ構造があるとします。Antでカンマ区切りのファイルリストを生成する

 
Root 
-- Directory1 
-- Directory2 
... 

"Directory1、Directory2"を含む変数またはプロパティを生成したいとします。私は<dirset dir="." includes="*">以上の反復(ant-contrib "for"タスクを使用)を試みましたが、これは絶対パスを生成します。私は "basename"タスクを使用してファイル名を抽出しましたが、結果として出力のプロパティが生成されます。プロパティは不変なので、実際には "Directory1、Directory1、..."となります。

私はこれを行うために賢い方法がありますか、それとも私のためにJavaエクステンションを書く必要がありますか?

答えて

10

pathconvertタスクは、任意の区切りとdirsetをフォーマットするために使用することができます。

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

globmapperと他のマイナーハックを使ってもう少し努力しました。あなたの例ではpathsepでdirsepを切り替えたことは間違いありませんが、私は必要な正確な方向を指摘しました。ありがとう! –

+0

は 'dirsep'と 'pathsep'の値が入れ替えられたようです。私はあなたがdirsep = "/" pathsep = ""、 " – iTake

4

ちょうどヨルンの答えを確認することは私も(出発点として)必要な正確に何でした。

<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は/ root/build/workspaceと似た絶対パスで、いくつかのサブディレクトリを含んでいます。 出力は、これらのディレクトリのスペースで区切られたリストです。

関連する問題