在Ant任务中,我设置了一个属性,它是一个文件列表。 e.g。
web/src/main/test/com/whatever/Ralph
business/src/main/test/com/whatever/Alice
web/src/main/test/com/whatever/Bob
我想从此列表中提取子目录集。在bash中我会:
$ cat filename | cut -d'/' -f1 | sort | uniq
business
web
有没有办法在Ant宏中做类似的事情?它也需要在Windows上运行,因此<exec>
不是一个选项。
答案 0 :(得分:2)
您可以使用loadresource
task filterchain来执行此操作。也许是这样的事情:
<property name="list.of.files">
web/src/main/test/com/whatever/Ralph
business/src/main/test/com/whatever/Alice
web/src/main/test/com/whatever/Bob
</property>
<loadresource property="dirs">
<string value="${list.of.files}" />
<filterchain>
<replaceregex pattern="/.*" replace="" />
<sortfilter />
<uniqfilter />
</filterchain>
</loadresource>
<echo message="${dirs}" />
结果:
[echo] business
[echo] web
BUILD SUCCESSFUL
在旧版本的Ant(&lt; 1.7)中,您可以通过将属性写入文件,然后使用带有过滤链的loadfile
任务来执行相同操作。