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