如何在 Ant 中创建文件的动态列表,然后保存此列表以供以后在构建过程中使用?我在想的是类似 immutable 的东西Fileset
。 Filelist
不起作用,因为它不接受通配符。
换句话说,我想创建一个基于包含/排除通配符的文件列表,这些通配符一旦创建就不会改变。也就是说,即使稍后添加了更多通过包含/排除规则的文件——我想保留初始文件集结果(特别是在构建过程中稍后删除)。这可能吗?
好吧,这就是我想出的。使用 pathconvert 将文件集存储到属性。然后在构建的后期迭代文件,对它们做任何你需要做的事情。就我而言,删除它们。
<macrodef name="storeBuildState">
<sequential>
<fileset dir="${build.dir}" id="current.fileset">
<include name="**/*.jar" />
</fileset>
<pathconvert pathsep="," property="current.fileset.prop" refid="current.fileset"/>
</sequential>
</macrodef>
<macrodef name="deleteStoredBuildState">
<sequential>
<for list="${current.fileset.prop}" param="file">
<sequential>
<delete file="@{file}" verbose="true" />
</sequential>
</for>
</sequential>
</macrodef>