如何将exec的输出分配给NAnt中的属性

时间:2013-01-18 13:28:21

标签: cruisecontrol.net nant

我的目标是用命令“git describe”的输出填充属性。 我有一个房产:

<property name="build.version" value = ""/>

我想用以下命令的输出填充它: git describe

我试过了:

<exec program='${git.executable}' outputproperty='build.version'>
  <arg value='describe' />
</exec>

但与Ant不同,NAnt不支持 outputproperty :(仅输出(到文件)。

2 个答案:

答案 0 :(得分:8)

你是对的。您拥有resultproperty属性来保存退出代码,output属性可以重定向输出。

为什么不通过loadfile任务重定向输出并加载文件:

<target name="foo">
  <property
    name="git.output.file"
    value="C:\foo.txt" />
  <exec program="${git.executable}" output="${git.output.file}">
    <arg value="describe" />
  </exec>
  <loadfile
    file="${git.output.file}"
    property="git.output" />
</target>

答案 1 :(得分:5)

使用trim,你可以在最后摆脱回车符。例如,在上面的示例中,在末尾添加一行来修剪字符串

<target name="foo">
  <property
    name="git.output.file"
    value="C:\foo.txt" />
  <exec program="${git.executable}" output="${git.output.file}">
    <arg value="describe" />
  </exec>
  <loadfile
    file="${git.output.file}"
    property="git.output" />

  <property name="git.ouput.trimmed" value="${string::trim(git.output)}" />

</target>