我们在Ant构建中有一个文件集,如下所示:
<fileset dir="somewhere/lib" includesfile="third-party-jars.txt"/>
然后在文本文件中将每个jar完整拼写出来。 (我们将它放在单独的文本文件中的原因实际上与构建文件简洁无关,而是更容易从我们检查所有第三方jar文件许可证的集成测试中检查列表。 )
有人提交了一个阻止文件进入构建的提交。 Ant根本没有拿起丢失的文件 - 构建继续进行。看起来很糟糕,即使文件名已完整拼写,也没有检测到丢失的文件......所以我现在正试图解决这个问题。
erroronmissingdir
有一个属性,但添加它没有帮助(dir
没有丢失。)有没有办法在文件集中丢失文件时出错?理想情况下,这是一种紧凑的方式......因为我们拥有多个这些文件集并且重复代码听起来并不吸引人。
其他人问过他们想要检查单个文件的更简单的变种。要检查单个文件,请使用available
任务。似乎available
仅支持一种资源。
我开始限制资源收集以尝试查找可用资源与不可用资源。
<restrict id="temp.available"><resources refid="@{ref-name}"/></restrict>
<difference id="temp.unavailable">
<resources refid="@{ref-name}"/>
<resources refid="temp.available"/>
</difference>
<fail message="Missing stuff">
<condition>
<resourcecount refid="temp.unavailable" when="greater" count="0"/>
</condition>
</fail>
这不起作用,似乎是因为资源集合已经缺少了不存在的项目。
答案 0 :(得分:0)
您要求的内容无法获得原生fileset
支持。 fileset
用作扫描程序:它基于特定目录,并根据您提供的包含/排除模式包含所有文件。在Ant 1.7左右之前,即使erroronmissingdir
也不是fileset
的一部分。
最好的办法是围绕available
任务编写一个宏,将资源集合传递给宏并使用for
循环(来自Ant-Contrib)来测试每个文件的可用性。