下面是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:
添加depends
到checkAndUpdateFlag
:
<target name="checkAndUpdateFlag" unless="conditionValue" depends="evalTask">
<!-- ... -->
可能解决方案#2:
首先在命令行上调用evalTask
目标:
ant evalTask targetA targetB