使用tstamp删除文件已经开始失败



我使用tstamp来构建要删除的旧文件的文件集。这一直工作得很好,但从本月初开始,它就失效了。

错误是:

Date of 08/09/2021 01:25 PM无法正确解析。格式为MM/DD/YYYY HH:MM AM_PM。


<target name="RemoveOldBackups" >
<tstamp>
<format property="BKRetention" pattern="MM/dd/yyyy hh:mm a" locale="en,UK" offset="-${Backup.Retention.Number}" unit="${Backup.Retention.Unit}"/>
</tstamp>
<for list="${Database.List}" param="database" parallel="${parallel}" threadCount="${threadCount}">
<sequential>
<echo message="Working on Database: @{database} Full path: ${Database.List.@{database}.Location}${Database.List.@{database}.FileName}" />
<delete>
<fileset dir="${Database.List.@{database}.LocalBackup}" includes="**/*.bkp">
<date datetime="${BKRetention}" when="before"/>
</fileset>
</delete>
</sequential>
</for>
</target>

脚本本身在那段时间内没有改变,所以它一定是与环境有关的。

经过进一步调查,我确定这台机器运行的是2012年的Ant版本。更新到最新版本后,问题已修复。

我偶然发现了这个线程,当任务与解决类似的消息"日期03/29/2023 10:43 AM不能正确解析。格式应为MM/DD/YYYY HH:MM AM_PM。">

在我的例子中,开发工作是从遗留构建环境转移到新创建的Jenkins代理。在这个过程中,他们(显然是在不知不觉中)从使用JDK 1.8变成了使用JDK 18。当使用较新的JDK时,ANT目标失败了——但是一旦JAVA_HOME设置为1.8 JDK,事情就神奇地开始工作了。

https://ant.apache.org/manual/Tasks/tstamp.html has "而不是"a"在图案中。也许值得一试。语言环境应该是"en,GB"从我的角度来看(或者这是实际的问题,应该是de, de)。

最新更新