【问题标题】:Ant exec command argument dealing with multiple files处理多个文件的 Ant exec 命令参数
【发布时间】:2015-08-03 13:34:09
【问题描述】:

我正在使用 ant exec 命令来实现 less 实用程序来查看一堆 .java 文件的源代码。 (我知道还有其他方法可以做到这一点,比如使用concat

所以如果我只指定一个文件,调用 ant view 就可以工作:

<target name="view">
    <exec executable="less" dir=".">
        <arg value="Main.java"/>
    </exec>
</target>

但如果我将代码更改为&lt;arg value="*.java"/&gt; 以查看所有文件,它实际上会搜索一个名为*.java 的文件。

显然我可以为每个文件添加一堆arg,但是有没有办法用一个arg 来做到这一点?

【问题讨论】:

  • *.java 作为arg value 传递对我有用并打印出所有java 源文件(ant 1.8.3 - windows/cygwin)。什么操作系统/ant 版本?
  • 我的ant版本是1.9.3

标签: java ant exec less-unix


【解决方案1】:

* glob 在类 Unix 上由 shell 扩展,这就是为什么 less 不自己做。

除了&lt;exec&gt; 之外,还有&lt;apply&gt; 用于资源集合:

<apply executable="less" dir="." parallel="true" relative="true">
  <fileset dir="." includes="*.java"/>
</apply>

【讨论】:

    【解决方案2】:

    您可以使用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>
    

    【讨论】:

    • 它执行的less 进程是否与文件一样多?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多