3

我知道有ant-contrib,它为 ant 提供了“if-else”逻辑。但我需要在没有 ant-contrib. 那可能吗?

我需要工作的伪代码:

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

谢谢!

4

2 回答 2

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>
于 2010-07-08T07:00:51.357 回答
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>
于 2010-07-08T01:27:31.113 回答