在我们基于Web的应用程序的nant构建脚本中,我们<copy>
一组文件到目标目录,然后通过<exec>
对它们运行aspnet_compiler。
<copy>
只复制已更改的文件,但是这里无法将此信息传递给<exec>
,并且我希望避免在没有实际更改时运行aspnet_compiler。
我试图找到的选项是:<copy>
在复制任何文件时设置属性,然后可以使用<if>
进行检查;或者能够在副本之前创建文件并执行<if test="any-file-newer-than(targetdir, timestampfile)">
之类的操作。更好的是,如果<copy>
可以返回一个复制文件列表,然后我可以迭代以避免必须处理整个树,但我认为这可能会有点过分。
到目前为止,我已经画了一个空白:如果不编写自定义扩展程序,我正在寻找什么?
答案 0 :(得分:0)
为什么不简单地用robocopy替换复制任务? (你在Windows上,对吧?)
Robocopy在不同的成功复制情况下返回不同的退出代码: https://ss64.com/nt/robocopy-exit.html
例如:
你可以这样做:
<exec program="robocopy.exe" commandline="${SourceDir} ${DestDir}" failonerror="false" resultproperty="ExitCode" />
<fail unless="${ExitCode < 8}" message="Failed to copy"/> <!-- Anything between 0..7 is OK for robocopy -->
<exec unless="${ExitCode == 0}" ...
&#13;