是否可以为NAnt属性分配默认值?

时间:2012-02-10 12:42:35

标签: nant

我想将属性值用作通过<exec/>任务传递给某个EXE的参数的一部分。有一个条件影响属性初始化,也就是说,如果条件为真,它应该包含值,否则只是空(但仍然定义)。

这是我到目前为止的结果:

<property name="prop1" value="" />
<property name="prop1" value="some-value-based-on-condition" if="condition-goes-here" />

后来:

<exec program="my.exe">
  <arg value="C:\Root\Folder\${prop1}" />
  ...
</exec>

如果未设置属性,我只想传递C:\Root\Folder\作为参数值。

以这种方式初始化属性对于这样一个简单的操作来说似乎太多了。有没有办法使用NAnt中的内容更简单?我想象的是:

<property name="prop1" value="somevalue-based-on-condition" if="condition" default="" />

2 个答案:

答案 0 :(得分:2)

以下示例应满足您的需求。它将创建一个名为“SolutionConfiguration”的属性,并且当且仅当尚未定义相同的参数时(即,它是通过命令行定义的),才为其分配值“。”

<property name="SolutionConfiguration" value="Release" unless="${property::exists('SolutionConfiguration')}" />

对于您的方案,请尝试

<property name="RootFolder" value="c:\Root\Folder" unless="${property::exists('RootFolder')}" />
<exec program="my.exe">
  <arg value="${RootFolder}\${prop1}" />
  ...
</exec>

答案 1 :(得分:0)

使用overwrite="False"

<property name="RootFolder" value="c:\Root\Folder" overwrite="false" />