Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant-在满足条件时运行步骤_Ant - Fatal编程技术网

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>