缺少file / build.properties时的Ant警告/失败?

时间:2011-06-09 11:34:54

标签: ant build-process

我的团队ant任务使用属性文件标记从build.properties文件中提取特定于开发人员的信息:

<property file="${user.home}/build.properties.txt" />

然而,当这个文件丢失时,ant继续无论如何。稍后在构建过程中,它会尝试访问尚未定义的属性,并尝试以${user.name}和其他类似错误登录svn服务器。这些错误很难调试,因为我使用的一些ant任务没有提供有用的错误消息。

我的主要问题是:如果无法找到属性文件,有没有办法让ant快速失败?

5 个答案:

答案 0 :(得分:8)

我认为你可以结合使用和失败:

如果文件存在,则设置属性

<available file="${user.home}/build.properties.txt" property="build.properties.present"/>

如果未设置属性,则失败

<fail unless="build.properties.present"/>

答案 1 :(得分:8)

您可以先添加显式检查。类似的东西:

<fail message="Missing build.properties">
  <condition>
    <not>
      <available file="${user.home}/build.properties.txt" />
    </not>
  </condition>
</fail>

可能会成功。

答案 2 :(得分:5)

我建议,不要测试是否存在特定的属性文件,而是测试属性定义。这样,可以以不同的方式提供此属性(例如,-Duser.name=myname)。

您可以在失败消息中提供建议的文件名。

E.g

<fail message="user.name property is not set.
    It is usually defined in ${user.home}/build.properties.txt">
  <condition>
    <not><isset property="user.name"/></not>
  </condition>
</fail>

答案 3 :(得分:2)

使用目标“loadproperties”ant任务而不是“属性文件” =“...”&gt;,因为后面的任务不会抱怨如果文件丢失,这是你的情况。 在缺少属性的情况下,loadproperties任务将始终使构建失败。

答案 4 :(得分:0)

使用Ant Plugin Flaka =

或更短

<project xmlns:fl="antlib:it.haefelinger.flaka">
    ...
 <fl:fail message="Houston we have a problem" test="!'${user.home}/build.properties.txt'.tofile.exists"/>
    ...
</project>