一、概述
touch是Ant内置任务,用于更改资源的修改时间,并可能同时创建它。除了单个文件之外,还可以处理资源和资源集合。ant1.7之前只支持fileset和filelist。Ant 使用java.io.File的 API 来设置最近修改时间,这种方式有一些限制。例如时间戳精度取决于操作系统,有些操作系统可能允许精度小于毫秒。ant1.8.2起,如果修改最后修改时间失败,会记录一条警告休信息。
二、属性
file:文件名。
millis:文件修改时间毫秒数。
datetime:文件修改时间,ant1.8之后,支持一个特殊值“now”,代表当前时间。datetime优先级高于millis,如果都不设置,默认为当前时间。
pattern:ant1.6.3起,SimpleDateFormat兼容模式字符串,默认为MM/DD/YYYY HH:MM AM(PM)或者MM/DD/YYYY HH:MM:SS AM(PM)。
mkdirs:ant1.6.3起,是否创建不存在的父目录,默认为false。
verbose:ant1.6.3起,是否记录文件的创建,默认为true。
可以使用任意数量的嵌套资源集合元素来定义任务的资源,并且可以引用别处的资源。传递给此任务的资源必须实现org.apache.tools.ant.types.resources.Touchable接口,所有基于文件系统的资源都是如此。ant1.6.3起,可以嵌套mapper元素,通过嵌套fileset、filelist元素或者file属性指定的文件,都可以通过mapper进行映射。当未指定时间时,如果原始文件存在,则使用其时间戳,否则使用当前时间。ant1.8起,任务设置的mills和datetime优先级高于原始文件的时间戳。
三、简单示例
<project>
<touch file="test/a.txt" mkdirs="true"/>
<touch file="a.txt" datetime="02/11/2018 10:32 am">
<mapper type="glob" from="a.txt" to="b.txt" />
</touch>
</project>