2010-11-30 126 views
1

這是我的ant腳本的一部分:如何將文件列表傳遞給<exec>?

<target> 
    <exec executable="find" outputproperty="found"> 
    <arg value="src/main/java"/> 
    <arg line="-name '*.java'"/> 
    </exec> 
    <exec executable="xgettext"> 
    <arg value="-k_"/> 
    <arg line="-o gettext.pot"/> 
    <arg line="${found}"/> 
    </exec> 
</target> 

不起作用,因爲xgettext接收文件和對待這個列表作爲一個單一的文件名的引述名單。如何解決它?

+0

代替``沒有幫助嗎? – khachik 2010-11-30 20:45:50

+0

不,沒有幫助。在這種情況下,`xgettext`將會收到一個帶引號的``find src/ma ...'`字符串,而不是反引號的shell命令 – yegor256 2010-11-30 20:51:23

回答

2

您需要將每個文件分離出單獨的arg才能工作。

您可以使用--files-from選項提供一個文件列表文件來處理到'xgettext'。 如何這樣的事情:寫的「查找」輸出到文件,然後重新裝入「了xgettext」:

<target> 
    <exec executable="find" outputproperty="found"> 
    <arg value="src/main/java"/> 
    <arg line="-name '*.java'"/> 
    </exec> 
    <echo file="xgettext.files" message="${found}" /> 
    <exec executable="xgettext"> 
    <arg value="-k_"/> 
    <arg value="-o" /> 
    <arg value="gettext.pot"/> 
    <arg value="--files-from=xgettext.files"/> 
    </exec> 
</target> 

另外,這裏有一個假設你有Bourne Shell中sh的變化 - 如果你有別的東西你可以適應。這個管道中的 '查找' 直接輸出到 '了xgettext':

<exec executable="sh"> 
    <arg value="-c"/> 
    <arg value="find src/main/java -name '*.java' | xgettext -k_ -o gettext.pot -f -"/> 
</exec>