如何将文件列表传递给<exec>?</exec>

时间:2010-11-30 20:40:16

标签: ant

这是我的蚂蚁脚本的一部分:

<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收到引用的文件列表,并将此列表视为单个文件名。怎么解决?

1 个答案:

答案 0 :(得分:2)

您需要将每个文件分离到单独的arg才能生效。

您可以使用--files-from选项提供要处理到'xgettext'的文件列表文件。 这样的事情:将'find'输出写入文件,然后重新加载到'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 - 如果您还有其他东西可以适应。这会将'find'输出直接传递给'xgettext':

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