条件 根据结果

问题描述 投票:0回答:1

在我们基于Web的应用程序的nant构建脚本中,我们将一组文件<copy>发送到目标目录,然后通过<exec>对它们运行aspnet_compiler。

<copy>只复制已更改的文件,但是这里无法将此信息传递给<exec>,我想避免在没有实际更改时运行aspnet_compiler。

我试图找到的选项是:<copy>在复制任何文件时设置属性,然后可以使用<if>进行检查;或者能够在副本之前创建文件并执行类似<if test="any-file-newer-than(targetdir, timestampfile)">的操作。更好的是,如果<copy>可以返回一个复制文件列表,然后我可以迭代以避免必须处理整个树,但我认为这可能会有点过分。

到目前为止,我已经画了一个空白:如果没有编写自定义扩展,我正在寻找什么?

nant
1个回答
0
投票

你为什么不简单地用robocopy替换复制任务? (你在Windows上,对吧?)

Robocopy在不同的成功复制情况下返回不同的退出代码:https://ss64.com/nt/robocopy-exit.html

例如:

  • 0 - 好的,没有复制
  • 1 - 好的,复制的东西

你可以这样做:

<exec program="robocopy.exe" commandline="${SourceDir} ${DestDir}" failonerror="false" resultproperty="ExitCode" />
<fail unless="${ExitCode &lt; 8}" message="Failed to copy"/> <!-- Anything between 0..7 is OK for robocopy -->
<exec unless="${ExitCode == 0}" ...
© www.soinside.com 2019 - 2024. All rights reserved.