如何将一个目标中设置的Ant属性值传递给另一个不依赖于第一个

时间:2016-10-12 08:00:24

标签: ant

以下是Ant任务示例。

<target name="evalTask">
    <condition property="conditionValue" >
        <mycustomTask:evaluateCondition/>
    </condition>
</target>

<target name="checkAndUpdateFlag" unless="conditionValue">
    <property name="isEnabled" value="true"/>    
</target>

<target name="targetA" depends="checkAndUpdateFlag" unless="conditionValue">
    <echo message="Do something if the conditionValue is set" />
</target>

<target name="targetB">
    <echo message=" Value of isEnabled : ${isEnabled} />
</target>

在上面的示例目标&#34; evalTask​​&#34;将设置属性&#34; conditionValue&#34;是我的自定义任务&#34; evalauateCondition返回true。

目标&#34; targetA&#34;只有当属性&#34; conditionValue&#34;已设定。哪个我工作正常。但该物业&#34; isEnabled&#34; in&#34; checkAndUpdateFlag&#34;没有设置或它永远不会进入内部&#34; checkAndUpdateFlag&#34;目标,我仍然得到&#34; isEnabled&#34;内部物业价值&#34; targetB&#34; as $ {isEnabled}。基本上&#34; isEnabled&#34;从未设定过。

下面是我用来运行此目标的ant命令。

  

ant targetA targetB

关于为什么我没有在targetB中获得isEnabled值的任何建议?

1 个答案:

答案 0 :(得分:0)

在您的示例中,evalTask目标永远不会运行,因此永远不会设置conditionValue属性。

由于未设置conditionValue属性,checkAndUpdateFlag目标将无法运行:

<target name="checkAndUpdateFlag" unless="conditionValue">

如果未设置unless="conditionValue"属性,<target name="checkAndUpdateFlag">会告诉Ant跳过conditionValue

可能的解决方案#1:

depends添加到checkAndUpdateFlag

<target name="checkAndUpdateFlag" unless="conditionValue" depends="evalTask">
    <!-- ... -->

可能的解决方案#2:

首先在命令行上调用evalTask目标:

  

ant evalTask​​ targetA targetB