8

我有一个 NAnt<exec>任务。我希望一个论点的存在以某些属性为条件true

例如,我希望-cpsExec 的命令行参数是有条件的。仅当 时才应输出${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.

我怎样才能做到这一点?

4

2 回答 2

6

NAnt 中的属性很棘手,因为它们没有类型,只是被视为类型string。所以这将是解决方案:

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

更新:过失!我错了。if="${psExec.copyprog}"也可以。所以有某种属性类型。

于 2013-03-02T06:50:15.560 回答
3

你需要把它放在==true里面{},但你也可以跳过它:

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

比较true布尔表达式true不会改变结果。

于 2013-03-03T15:12:44.317 回答