2011-06-09 62 views
2

在一個Ant任務中,我設置了一個屬性,它是一個文件列表。例如螞蟻相當於cut |排序| uniq

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

不是你的問題的答案,而是一個提示 - 你可以用'sort -u'替換'sort | uniq' – Lobo 2011-06-09 03:13:04

+0

啊謝謝你。 bash的魔力永無止境。 – Synesso 2011-06-09 04:25:53

回答

2

您可以使用loadresource taskfilterchain來執行此操作。像這樣的事情也許:

<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(< 1.7),你可以通過出寫入屬性到一個文件,然後使用loadfile任務與做同樣的filterchain。

+1

['loadresource'](http://ant.apache.org/manual/Tasks/loadresource.html)[[string]](http://ant.apache.org/manual/Types/resources .html#string)資源(和相同的'filterchain')? – matt 2011-06-09 11:34:18

+0

@matt:非常簡單,謝謝。我總是忘記了Ant資源的力量。 – 2011-06-09 12:17:25