2013-03-01 1 views
7

나는 NAnt <exec> 작업이 있습니다. 나는 하나의 논쟁의 존재가 어떤 속성에 조건부가되기를 원한다. true.NAnt <exec>에서 속성 값을 기준으로 조건부 <arg>을 얻는 방법은 무엇입니까?

예를 들어, psExec의 -c 명령 줄 인수를 조건부로 지정합니다. ${pExec.copyprog == 'true'} 인 경우에만 출력되어야합니다.

다음은 작동하지 않습니다

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

가 어떻게 이것을 달성 할 수

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

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

그것은 다음과 같은 오류를 얻을?

답변

5

NAnt의 속성은 유형이없고 단순히 string 유형으로 간주되기 때문에 까다 롭습니다.

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

업데이트 : 내 잘못 culpa 그래서이 해결책이 될 것입니다! 내가 틀렸어. if="${psExec.copyprog}"도 작동합니다. 그래서 일종의 부동산 유형이 있습니다.

2

당신은 {} 내부 ==true을 둘 필요가 것입니다,하지만 당신은 그냥 건너 뛸 수 있습니다 :

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

을 결과를 변경하지 않습니다 truetrue 부울 식을 비교.

관련 문제