我正在尝试在当前目录下创建以逗号分隔的文件或目录列表。例如,假设我有以下文件夹结构:
Root -- Directory1 -- Directory2 ...
我想生成一个包含“Directory1,Directory2”的变量或属性。我试过在<dirset dir="." includes="*">
上迭代(使用ant-contrib“for”任务),但这会生成绝对路径;然后,我使用“basename”任务提取文件名,但这反过来会生成输出属性。由于属性是不可变的,我在实践中得到的是“Directory1,Directory1,...”
有没有更好的方法来做到这一点,还是我必须编写Java扩展来为我做这个?
答案 0 :(得分:10)
pathconvert
任务可用于使用任意分隔符格式化dirset:
<dirset id="dirs" dir="." includes="*"/>
<pathconvert dirsep="/" pathsep="," property="dirs" refid="dirs"/>
<echo message="${dirs}"/>
答案 1 :(得分:4)
刚刚确认Jörn的回答正是我所需要的(作为起点)。
<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的绝对路径,包含几个子目录。 输出是这些目录的空格分隔列表。