处理多个文件的 Ant exec 命令参数
Ant exec command argument dealing with multiple files
我正在使用 ant exec 命令来实现 less 实用程序来查看一堆 .java 文件的源代码。 (我知道还有其他方法可以做到这一点,比如使用 concat
)
因此,如果我只指定一个文件,调用 ant view
就可以工作:
<target name="view">
<exec executable="less" dir=".">
<arg value="Main.java"/>
</exec>
</target>
但是如果我将代码更改为 <arg value="*.java"/>
以查看所有文件,它实际上会搜索名为 *.java
.
的文件
显然我可以为每个文件放一堆 arg
,但是有没有办法用一个 arg
来做到这一点?
您可以使用 foreach
,这需要 ant-contrib
<target name="view">
<foreach target="call-less" param="file">
<fileset dir="${src}" includes="**/*.java" />
</foreach>
</target>
<target name="call-less">
<exec executable="less">
<arg value="${file}" />
</exec>
</target>
*
glob 在 Unix-likes 上被 shell 扩展,这就是 less 不自己做的原因。
除了 <exec>
之外还有 <apply>
用于资源集合:
<apply executable="less" dir="." parallel="true" relative="true">
<fileset dir="." includes="*.java"/>
</apply>
我正在使用 ant exec 命令来实现 less 实用程序来查看一堆 .java 文件的源代码。 (我知道还有其他方法可以做到这一点,比如使用 concat
)
因此,如果我只指定一个文件,调用 ant view
就可以工作:
<target name="view">
<exec executable="less" dir=".">
<arg value="Main.java"/>
</exec>
</target>
但是如果我将代码更改为 <arg value="*.java"/>
以查看所有文件,它实际上会搜索名为 *.java
.
显然我可以为每个文件放一堆 arg
,但是有没有办法用一个 arg
来做到这一点?
您可以使用 foreach
,这需要 ant-contrib
<target name="view">
<foreach target="call-less" param="file">
<fileset dir="${src}" includes="**/*.java" />
</foreach>
</target>
<target name="call-less">
<exec executable="less">
<arg value="${file}" />
</exec>
</target>
*
glob 在 Unix-likes 上被 shell 扩展,这就是 less 不自己做的原因。
除了 <exec>
之外还有 <apply>
用于资源集合:
<apply executable="less" dir="." parallel="true" relative="true">
<fileset dir="." includes="*.java"/>
</apply>