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

Mar*_*tyn 3 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>
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*tyn 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>
Run Code Online (Sandbox Code Playgroud)

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