1

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

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

4

1 回答 1

0

您所要求的内容无法通过本机fileset支持获得。fileset用作扫描器:它基于特定目录,并根据您提供的包含/排除模式包含所有文件。直到 Ant 1.7 左右, Evenerroronmissingdir才成为其中的一部分。fileset

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

于 2012-11-21T02:55:28.377 回答