在使用 Ant 的构建过程中,我想更新生成文件的上次修改日期。 我正在连接(使用 concat 任务)几个文件来生成此文件,并且我想将此文件的修改日期设置为源文件最近修改的日期。
我在触摸任务中没有看到任何使用多个文件作为日期源的选项。
下面是一个示例解决方案:
<scriptdef name="filedate" language="javascript">
<attribute name="file"/>
<attribute name="property"/>
<![CDATA[
var file_name = attributes.get( "file" );
var property_to_set = attributes.get( "property" );
var file = new java.io.File( file_name );
var file_date = file.lastModified();
project.setProperty( property_to_set, file_date );
]]>
</scriptdef>
<last id="last.dir">
<sort>
<fileset dir="folder" includes="*" />
<date />
</sort>
</last>
<filedate file="${ant.refid:last.dir}" property="file.ts" />
<touch file="concat.file" millis="${file.ts}" />
scriptdef 源自 David W 的这个答案,并进行了简化,因为我们不需要格式化日期时间,我们只需使用 Java FilelastModified()
提供的"纪元毫秒"和 Ant 触摸任务所期望的。