如何将一个目标中设置的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>

在上面的例子中,目标"evalTask"将设置属性"conditionValue"是我的自定义任务" evalauateconcondition返回true。

目标"targetA"只有在属性"conditionValue"被设置时才会被执行。我做得很好。但是"checkAndUpdateFlag"中的属性"isEnabled"没有被设置,或者它永远不会进入"checkAndUpdateFlag"目标,我仍然得到"targetB"内部的"isEnabled"属性值为${isEnabled}。基本上"isEnabled"是不会设置的。

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

ant targetA targetB

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

在您的示例中,evalTask目标从未运行,因此从未设置conditionValue属性。

由于conditionValue属性没有设置,checkAndUpdateFlag目标不会运行:

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

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

可能解决方案#1:

添加dependscheckAndUpdateFlag:

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

可能解决方案#2:

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

ant evalTask targetA targetB

相关内容

  • 没有找到相关文章

最新更新