如何使用“条件”模拟“if-else”逻辑?

时间:2010-07-08 01:15:26

标签: ant conditional if-statement ant-contrib

我知道有ant-contrib,它为ant提供了“if-else”逻辑。 但我需要实现相同的而不是 ant-contrib。这可能吗?

我需要工作的伪代码:

if(property-"myProp"-is-true){
  do-this;
}else{
  do-that;
}

谢谢!

2 个答案:

答案 0 :(得分:4)

我强烈建议使用ant-contribs但是如果你正在测试一个总是有值的属性,我会考虑使用一个ant宏参数作为新属性名称的一部分,然后你测试

<macrodef name="create-myprop-value">
 <attribute name="prop"/>
 <sequential>
      <!-- should create a property called optional.myprop.true or -->
      <!-- optional.myprop.false -->
      <property name="optional.myprop.@{prop}" value="set" />
 </sequential>
</macrodef>

<target name="load-props">
  <create-myprop-value prop="${optional.myprop}" /> 
</target>

<target name="when-myprop-true" if="optional.myprop.true" depends="load-props">
...
</target>

<target name="when-myprop-false" if="optional.myprop.false" depends="load-props">
...
</target>

<target name="do-if-else" depends="when-myprop-true,when-myprop-false">
...
</target>

答案 1 :(得分:3)

您可以在目标中添加“if”属性。

<target name="do-this-when-myProp-is-true" if="myProp">
...
</target>

只有在设置了“myProp”时才会触发。您需要在其他位置定义myProp,以便在您希望此目标触发时进行设置。如果你不这样做。除非替代案例,否则您可以使用

<target name="do-this-when-myProp-is-false" unless="myProp">
...
</target>