Ant-在满足条件时运行步骤
我对蚂蚁有一个奇怪的问题。我想有条件地执行一个步骤,所以我创建了一个非常简单的示例:Ant-在满足条件时运行步骤,ant,Ant,我对蚂蚁有一个奇怪的问题。我想有条件地执行一个步骤,所以我创建了一个非常简单的示例: <project name="TestProj" default="def"> <property name="prop1" value="xxx"/> <target name="init"> <echo message="init step"/> </target> <target name="def" depends="ini
<project name="TestProj" default="def">
<property name="prop1" value="xxx"/>
<target name="init">
<echo message="init step"/>
</target>
<target name="def" depends="init">
<echo message="def step"/>
<condition property="should.run">
<equals arg1="${prop1}" arg2="xxx"/>
</condition>
<echo message="outside check"/>
</target>
<target name="yes" if="${should.run}" depends="def">
<echo message="yeah,should run"/>
</target>
<target name="no" unless="${should.run}" depends="def">
<echo message="no,dont run"/>
</target>
因此,我的条件步骤根本没有运行
我的例子有什么问题?提前感谢您的建议。
如果
和,除非
使用属性名称而不是值来检查是否存在。因此,您应该使用if=“should.run”
,除非=“should.run”
,主要问题似乎在于您的目标依赖关系,而不是您的条件。您的yes
和no
目标取决于def
,而不是相反。因此调用def
只会运行def
和init
(因为def
依赖于init
)。您需要创建第三个目标或扩展点,该目标或扩展点同时调用yes
和no
,以使其按预期工作
<extension-point name="all" depends="yes,no" />
不完全是。
if
和属性的行为会发生变化,这取决于您是为它们提供属性名称还是属性引用。如果属性should.run
设置为false
,则使用If=“${should.run}
将导致跳过目标。但是,使用If=“should.run”
时,目标仍将运行。
<extension-point name="all" depends="yes,no" />
<condition property="should.run" value="true" else="false>
<equals arg1="${prop1}" arg2="xxx" />
</condition>