相当于削减的Ant |排序| uniq的

时间:2011-06-09 03:00:32

标签: ant

在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>不是一个选项。

1 个答案:

答案 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任务来执行相同操作。