windows cmd提示符是罪魁祸首 - 我有时会cd到我的一个构建子目录中检查一些内容,除非我关闭控制台或cd出其他地方,我的下一个版本当然会失败,因为它无法删除构建目录。
当然,我可以退出cmd提示符或cd out,但我忘记了,在我知道之前,我的CI服务器因此而拥有所有这些失败的构建。
我可以想象Ant无法强制删除,但还有另一个好的策略吗?是否可以告诉Ant尝试删除但如果不能失败则不会失败?我可以看到这可能不是一个好主意,但这是我必须专门为我的情景权衡的。
或者至少是否有cmd.exe选项或替代cmd行没有锁定当前工作目录?
答案 0 :(得分:2)
如果其他人在该目录中,Windows将不允许您删除目录。它是一个控制台窗口还是一个资源管理器窗口并不重要。除了首先杀死进程之外,没有真正的方法。
您使用的是哪种持续集成工具?如果您使用Jenkins或Hudson(几个月前Jenkins从Hudson分离出来),您可以通过单击浏览器窗口左侧的“工作目录”链接来查看工作目录。这将为您提供工作目录的视图(以便您可以检查所有内容),但不会锁定目录并阻止删除。
如果您必须使用构建计算机,请禁用该作业,这样构建服务器将不会在您检查时进行构建。
答案 1 :(得分:1)
首先,我认为您不应该登录到构建服务器并经常查看构建子目录,这是一个一致的问题。您是否在构建服务器本身上进行构建?如果是这样,那么最好确保您可以从开发人员计算机运行完全相同的构建脚本,并且可以在本地处理它。一致性是关键。
除此之外,您可以终止托管命令窗口的会话。命令窗口将成为交互式会话的一部分。您可以设置计划的进程来查找和终止非活动但是挂起的会话。这是一个很好的交互式指南,但这可以很容易编写脚本。
您必须为自动终止会话的时间定义自己的标准。
答案 2 :(得分:0)
您可能想要探索ant删除任务的'quiet'和'failonerror'属性。 但要小心。
答案 3 :(得分:0)
可能是导致问题的病毒扫描吗?也许只是排除该目录就行了。