Ant构建关闭-Ctrl C
我有一组用于运行测试套件的ant任务,偶尔其中一个测试会冻结,而我的整个测试套件会挂起。我添加了一个关机处理程序,所以当我点击Ctrl+C时,ant将优雅地关机,并给我一个报告,其中最后的测试标记为NotRun。(这一点很重要,因为这些是集成测试,可以运行数小时)除了在Windows上没有调用我的关闭挂钩之外,这一点非常有效。有没有一种方法可以让ant响应任何类型的输入并优雅地关闭 看来这是一个好消息 问题是,正如您所观察到的,在Windows上Ant Ctrl+C并没有传播到子VM。您可能会考虑的事项:Ant构建关闭-Ctrl C,ant,copy-paste,shutdown-hook,Ant,Copy Paste,Shutdown Hook,我有一组用于运行测试套件的ant任务,偶尔其中一个测试会冻结,而我的整个测试套件会挂起。我添加了一个关机处理程序,所以当我点击Ctrl+C时,ant将优雅地关机,并给我一个报告,其中最后的测试标记为NotRun。(这一点很重要,因为这些是集成测试,可以运行数小时)除了在Windows上没有调用我的关闭挂钩之外,这一点非常有效。有没有一种方法可以让ant响应任何类型的输入并优雅地关闭 看来这是一个好消息 问题是,正如您所观察到的,在Windows上Ant Ctrl+C并没有传播到子VM。您可能会考
- 将测试分解为更小的部分,并使用
消除任何挂起的内容。这将把丢失的数据限制在一个挂起的测试中超时
- 在测试运行中,添加一个“侦听器”线程,该线程等待关机“信号”(可能存在标志文件),如果检测到挂起,则安排Ant根据控制台的命令设置该信号
parallel
和input
任务组合在一个线程中运行测试,并在第二个线程中等待控制台的输入。当选择中止时,将写入信号文件,这将在测试运行“侦听器”中检测到,导致其终止。任何其他输入都会导致运行完全终止。这样做的问题是,如果测试成功完成,Ant将等待用户输入,但您可以为此设置一个总超时。(我没有给出测试运行代码如何检测信号文件的示例。)
Psuedo蚂蚁:
<property name="signal.abort" value="stop.txt" />
<target name="runner">
<delete file="${signal.abort}" />
<parallel timeout="86400000">
<sequential>
<!-- run tests here -->
</sequential>
<sequential>
<input validargs="y,n"
message="Abort the test (y/n)?"
addproperty="abort.test" />
<condition property="do.abort">
<equals arg1="y" arg2="${abort.test}"/>
</condition>
<ant target="terminator" />
</sequential>
</parallel>
</target>
<target name="terminator" if="do.abort">
<echo message="abort" file="${signal.abort}" />
</target>