问题描述
||
我正在尝试使用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>
编辑:先更改后添加过滤器