我正在尝试使用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的语言)获取文件的修改日期的问题
答案 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>
编辑:从头到尾更改并添加了过滤器