在Ant中复制带有文件名过滤器的最新文件

问题描述

|| 我正在尝试使用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一起使用的任何其他语言)获取文件修改日期。     

解决方法

        答案是:
<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>
编辑:先更改后添加过滤器