如果没有设置某个环境变量,如何调用一些Ant目标?

Vol*_*lyy 7 ant

在有特定环境变量的情况下,我不想在build.xml中调用目标.

使用Ant 1.7.0,以下代码不起作用:

<property environment="env"/>
<property name="app.mode" value="${env.APP_MODE}"/>

<target name="someTarget" unless="${app.mode}">    
   ...
</target>

<target name="all" description="Creates app">
   <antcall target="someTarget" />
</target>
Run Code Online (Sandbox Code Playgroud)

目标"someTarget"执行是否存在环境变量APP_MODE.

ska*_*man 14

unless属性的文档说:

为执行此目标而不能设置的属性的名称,或者评估为false的内容

因此,在您的情况下,您需要输入属性的名称,而不是对属性的评估:

<target name="someTarget" unless="app.mode">    
   ...
</target>
Run Code Online (Sandbox Code Playgroud)

笔记

  • 在Ant 1.7.1及更早版本中,这些属性只能是属性名称.
  • 从Ant 1.8.0开始,您可以使用属性扩展; 值为true(或on或yes)将启用该项,而false(或off或no)将禁用该项.其他值仍假定为属性名称,因此仅在定义了命名属性时才启用该项.

参考