我需要用户在编译时定义变量,我仍然需要确定它是环境变量还是属性(ant -Dname=value
)。
如果用户没有定义变量,如何在编译时引发错误?
答案 0 :(得分:20)
只需添加:
<fail unless="var1" message="var1 is not set"/>
如果未设置var1
,则构建将失败。
答案 1 :(得分:9)
对于第一个问题:
如果变量是针对应用程序之外的特定于环境的条件,则将其设置为环境(OS)变量。否则,将其作为财产。显然,这并不能完全回答您的问题,因为您仍然必须确定(对于您的应用或系统)说变量是特定于环境的的含义。
另一个指南是问自己是否可以(或将要)多个依赖于同一变量的不同值的应用程序,所有这些都可能部署在同一系统上。在这种情况下,我们不能使用环境变量,基于属性的变量是唯一的方法。
关于第二个问题:
如果未设置条件或属性,请使用Ant的内置 Fail 任务中止构建。从Ant的 失败 任务的文档中,如果您使用基于属性的变量,您可以了解如何进行此操作:
<fail>
<condition>
<not>
<isset property="thisdoesnotexist"/>
</not>
</condition>
</fail>
如果您决定使用环境变量,只需使用 属性 任务的 环境 属性利用环境(OS)变量就像它们是构建属性一样(请参阅applicable documentation作为示例。)
希望它有所帮助。