如何编写Ant模式以获取带有时间戳的最新修改文件。
我的文件是:
Testcases_Results_dd-mm-yyyy_hh_mm_ss.xlsx
Testcases_Results_dd-mm-yyyy_hh_mm_ss.xlsx
Testcases_Results_dd-mm-yyyy_hh_mm_ss.xlsx
在Jenkins中,我在附件中配置为** / TestResults / Testcases_Results _ *。xlsx 但是我没有最新文件,它正在选择所有文件。
答案 0 :(得分:0)
如果最新文件的lastmodifieddate
最高,则可以使用
<last>
<sort>
<date xmlns="antlib:org.apache.tools.ant.types.resources.comparators"/>
<resources>
<fileset dir="/path/to/files/">
<include name="Testcases_Results_*" />
</fileset>
</resources>
</sort>
</last>
如here所述。
您可以通过另一种方式定义和使用scriptdef
<scriptdef name="getLatesFile" language="javascript">
<attribute name="result"/>
<element name="fileset" type="fileset"/>
<![CDATA[
fileset = elements.get("fileset").get(0);
scanner = fileset.getDirectoryScanner(project);
scanner.scan();
files = scanner.getIncludedFiles();
var latestDate = new Date(1970, 0, 1, 0, 0, 0);
for( j=0; j < files.length; j++) {
var filename = files[j];
var dateSuffix = filename.substring("Testcases_Results_".length, filename.indexOf(".xlsx"));
//dd-mm-yyyy_hh_mm_ss
var bits = dateSuffix.split(/\D/);
var date = new Date(bits[2], --bits[1], bits[0], bits[3], bits[4], bits[5]);
if(date > latestDate) {
latestDate = date;
self.project.setProperty( attributes.get("result"), filename );
}
}
]]>
</scriptdef>
<target name="init">
<getLatesFile result="latest_file">
<fileset dir="/path/to/files/">
<include name="Testcases_Results_*" />
</fileset>
</getLatesFile>
<echo>${latest_file}</echo>
</target>