从锁定构建目录的东西中避免干净失败(并因此构建)

时间:2011-04-21 02:09:40

标签: windows ant build

windows cmd提示符是罪魁祸首 - 我有时会cd到我的一个构建子目录中检查一些内容,除非我关闭控制台或cd出其他地方,我的下一个版本当然会失败,因为它无法删除构建目录。

当然,我可以退出cmd提示符或cd out,但我忘记了,在我知道之前,我的CI服务器因此而拥有所有这些失败的构建。

我可以想象Ant无法强制删除,但还有另一个好的策略吗?是否可以告诉Ant尝试删除但如果不能失败则不会失败?我可以看到这可能不是一个好主意,但这是我必须专门为我的情景权衡的。

或者至少是否有cmd.exe选项或替代cmd行没有锁定当前工作目录?

4 个答案:

答案 0 :(得分:2)

如果其他人在该目录中,Windows将不允许您删除目录。它是一个控制台窗口还是一个资源管理器窗口并不重要。除了首先杀死进程之外,没有真正的方法。

您使用的是哪种持续集成工具?如果您使用JenkinsHudson(几个月前Jenkins从Hudson分离出来),您可以通过单击浏览器窗口左侧的“工作目录”链接来查看工作目录。这将为您提供工作目录的视图(以便您可以检查所有内容),但不会锁定目录并阻止删除。

如果您必须使用构建计算机,请禁用该作业,这样构建服务器将不会在您检查时进行构建。

答案 1 :(得分:1)

首先,我认为您不应该登录到构建服务器并经常查看构建子目录,这是一个一致的问题。您是否在构建服务器本身上进行构建?如果是这样,那么最好确保您可以从开发人员计算机运行完全相同的构建脚本,并且可以在本地处理它。一致性是关键。

除此之外,您可以终止托管命令窗口的会话。命令窗口将成为交互式会话的一部分。您可以设置计划的进程来查找和终止非活动但是挂起的会话。这是一个很好的交互式指南,但这可以很容易编写脚本。

http://www.howtogeek.com/howto/windows/command-line-hack-for-terminal-server-has-exceeded-the-maximum-number-of-allowed-connections/

您必须为自动终止会话的时间定义自己的标准。

答案 2 :(得分:0)

您可能想要探索ant删除任务的'quiet'和'failonerror'属性。 但要小心。

答案 3 :(得分:0)

可能是导致问题的病毒扫描吗?也许只是排除该目录就行了。