Как можно эмулировать логику if-else с помощью условия? - PullRequest
3 голосов
/ 08 июля 2010

Я знаю, что есть ant-contrib, который обеспечивает логику "если-еще" для муравья.Но мне нужно добиться того же без ant-contrib.Это возможно?

Псевдокод, с которым мне нужно работать:

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

Спасибо!

Ответы [ 2 ]

4 голосов
/ 08 июля 2010

Я бы настоятельно рекомендовал использовать 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>
3 голосов
/ 08 июля 2010

Вы можете поставить атрибут "если" в ваших целях.

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

Это сработает, только если установлено «myProp». Вам нужно определить myProp в другом месте так, чтобы он был установлен, если вы хотите, чтобы эта цель срабатывала, а не если нет. Вы можете использовать, если для альтернативного случая:

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