使用Ant中的文件名过滤器复制最新文件

时间:2011-05-27 15:44:55

标签: ant copy

我正在尝试使用Ant从目录中复制最新文件,理想情况下我也想对文件名进行过滤(例如:'* file.java'),但我不知道如何做到这一点

到目前为止,我已经包含了我的脚本,但它在JavaScript中存在缺陷,而且我没有足够的经验知道原因。

<project name="test1" basedir=".">

    <property file="../local.properties" />
    <property file="../build.properties" />
    <property file="../default.properties" />

    <target name="init">        
        <copy todir=".">
            <fileset dir="/path/to/files">
                <scriptselector language="javascript">
                    var files = basedir.list();
                    var mostRecent = true;
                    for(var i = 0; i < files.size(); i++) {
                        mostRecent = mostRecent && (filename >= files[i]);
                    }
                    self.setSelected(mostRecent);
                </scriptselector>
            </fileset>
        </copy>
    </target>
</project>

编辑:刚刚意识到网站我从上面得到了上面的JavaScript代码,这个选择器是“只选择目录的最新文件,其中每个文件都有一个时间戳作为其文件名”,所以我的例子不起作用,因为它使用名称作为修改日期。这导致了如何使用JavaScript(或任何其他适用于Ant的语言)获取文件的修改日期的问题

1 个答案:

答案 0 :(得分:8)

答案是:

<target name="init">
     <copy todir="." flatten="true">
        <last>
            <sort>
                <date xmlns="antlib:org.apache.tools.ant.types.resources.comparators"/>
                <resources>
                    <fileset dir="/path/to/files/">
                        <include name="*sdk*" />
                    </fileset>
                </resources>
            </sort>
        </last>
    </copy>
</target>

编辑:从头到尾更改并添加了过滤器