在Ant中是否缺少等同于erroronmissingdir的文件?

时间:2012-11-21 00:38:13

标签: ant fileset

我们在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>

这不起作用,似乎是因为资源集合已经缺少了不存在的项目。

1 个答案:

答案 0 :(得分:0)

您要求的内容无法获得原生fileset支持。 fileset用作扫描程序:它基于特定目录,并根据您提供的包含/排除模式包含所有文件。在Ant 1.7左右之前,即使erroronmissingdir也不是fileset的一部分。

最好的办法是围绕available任务编写一个宏,将资源集合传递给宏并使用for循环(来自Ant-Contrib)来测试每个文件的可用性。