2013-03-01 20 views
7

我有一個NAnt <exec>任務。我想要一個論據的存在是有條件的一些財產是true在NAnt <exec>,如何獲得基於屬性值的條件<arg>?

例如,我想讓psExec的-c命令行參數有條件。只有在${pExec.copyprog == 'true'}時才應該輸出。

下不起作用:

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

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

它產生以下錯誤:

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

我怎樣才能做到這一點?

回答

5

NAnt中的屬性很棘手,因爲它們沒有類型,只是被認爲是string。因此,這將是解決辦法:

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

更新:過失!我錯了。 if="${psExec.copyprog}"也有效。所以有一些屬性輸入。

2

你需要把裏面==true{},但你也可以跳過它:

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

一個true布爾表達式相較於true不會改變結果。