2010-07-08 4 views

Répondre

4

Je recommande fortement d'utiliser fourmilières contribs de toute façon, mais si vous testez une propriété qui a toujours une valeur que je regarderais en utilisant un paramètre macro ant dans le cadre du nom d'une nouvelle propriété que vous puis testez pour

<macrodef name="create-myprop-value"> 
<attribute name="prop"/> 
<sequential> 
     <!-- should create a property called optional.myprop.true or --> 
     <!-- optional.myprop.false --> 
     <property name="[email protected]{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> 
+0

à proprement parler, la « autre » cible pourrait être codé comme à moins = « optional.myprop.true » plutôt que si = « optional.myprop.false ». La macro peut également être générique pour transmettre le nom de la propriété en tant que paramètre. –

3

Vous pouvez mettre un attribut "if" dans vos cibles.

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

Ceci ne se déclenchera que si "myProp" est activé. Vous aurez besoin de définir myProp ailleurs, de sorte qu'il est défini si vous voulez que cette cible se déclenche, même si ce n'est pas le cas. Vous pouvez utiliser moins pour le cas alternatif:

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