2013-03-01 16 views
7

Mam <exec> zadanie NANT. Chcę, aby jedna argumentacja była warunkowa, aby jakaś właściwość była true.W NAnt <exec>, jak mają warunkową <arg> oparciu o wartość nieruchomości?

Na przykład chcę, aby argument wiersza poleceń psExec -c był warunkowy. Powinien być wyprowadzany tylko wtedy, gdy ${pExec.copyprog == 'true'}.

Następujące nie działa:

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

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

To daje następujący błąd:

'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. 

W jaki sposób można to osiągnąć?

Odpowiedz

5

Właściwości w NAnt są trudne, ponieważ nie mają one charakteru i po prostu są uważane za typ string. Więc byłoby to rozwiązanie:

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

Aktualizacja: Mea culpa! Myliłem się. if="${psExec.copyprog}" również działa. Tak więc istnieje typowanie nieruchomości.

2

trzeba by umieścić ==true wewnątrz {}, ale można też po prostu pominąć go:

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

Porównywanie true logiczną wyraz true nie zmienia wynik.

Powiązane problemy