2013-03-01 75 views
7

Ho un'attività NAnt <exec>. Voglio che una presenza argomento sia condizionata a determinate proprietà true.In NAnt <exec>, come disporre di un condizionale <arg> basato sul valore della proprietà?

Ad esempio, voglio che l'argomento della riga di comando -c di psExec sia condizionale. Dovrebbe essere emesso solo se ${pExec.copyprog == 'true'}.

Quanto segue non funziona:

<property name="psExec.copyprog" value="false" /> 
... 

<exec program="${psExec.path}" failonerror="false"> 
    ... 
    <arg line="-c" if="${psExec.copyprog}==true" /> 
</exec> 

produce il seguente errore:

'false==true' is not a valid value for attribute 'if' of <arg ... />. 
    Cannot resolve 'false==true' to boolean value. 
     String was not recognized as a valid Boolean. 

Come posso raggiungere questo obiettivo?

risposta

5

Le proprietà in NAnt sono difficili in quanto non hanno un tipo e sono semplicemente considerate come di tipo string. Quindi questa sarebbe la soluzione:

<exec program="${psExec.path}" failonerror="false"> 
    <!-- ... --> 
    <arg line="-c" if="${bool::parse(psExec.copyprog)}" /> 
</exec> 

Aggiornamento: Mea culpa! Mi sbagliavo. if="${psExec.copyprog}" funziona anche. Quindi c'è una sorta di digitazione della proprietà.

2

Avresti bisogno di mettere dentro ==true{}, ma si può anche saltare la parte dimenticata:

<arg line="-c" if="${psExec.copyprog}" /> 

Confrontando un'espressione booleana true a true non cambia il risultato.