Windows Apache Ant:终止由<;启动的进程;执行官>;当ant进程终止时
我有一个ant任务,它使用Windows Apache Ant:终止由<;启动的进程;执行官>;当ant进程终止时,windows,batch-file,ant,cmd,exec,Windows,Batch File,Ant,Cmd,Exec,我有一个ant任务,它使用执行一个冗长的构建操作。Ant由windows命令行中的批处理文件启动。如果通过关闭窗口来终止ant任务,则由启动的进程将继续运行。当ant进程本身被终止时,如何实现终止派生进程 Ant 1.10.0在带有Oracle JDK 8的Windows 7 x64上使用。启动流程的任务类似于: <exec executable="${make.executable}" dir="${compile.dir}" failonerror="true"> <
执行一个冗长的构建操作。Ant由windows命令行中的批处理文件启动。如果通过关闭窗口来终止ant任务,则由
启动的进程将继续运行。当ant进程本身被终止时,如何实现终止派生进程
Ant 1.10.0在带有Oracle JDK 8的Windows 7 x64上使用。启动流程的任务类似于:
<exec executable="${make.executable}" dir="${compile.dir}" failonerror="true">
<arg line="${make.parameters}" />
</exec>
关闭命令行窗口时,运行ant的
java
进程将正确终止。以下是一个可能的解决方案:
- 批处理脚本使用名为
的参数启动AntantPidFile
- Ant脚本使用Java
工具获取运行Ant脚本的jps
进程的PIDJava.exe
- Ant脚本将PID写入
antPidFile
- Ant脚本生成子进程
- Ant退出并控制返回到批处理脚本
- 批处理脚本将前一个Ant脚本的PID加载到一个变量中
- 批处理脚本使用内置的
工具来识别Ant生成的进程wmic
- 批处理脚本使用内置的
工具终止Ant生成的所有子进程(和子进程)taskkill
批处理脚本
setlocal
设置DeadAntProcessIdFile=ant-pid.txt
调用ant“-DantPidFile=%DeadAntProcessIdFile%”
rem Ant脚本应该已将其PID写入DeadAntProcessIdFile。
设置/p DeadAntProcessId=<%DeadAntProcessIdFile%
rem杀死由Ant脚本创建的任何延迟进程。
对于/f“跳过=1 usebackq”%%h in(
`wmic进程,其中“ParentProcessId=%DeadAntProcessId%”获取ProcessId^| findstr`
)执行任务终止/F/T/PID%%h
如果用户关闭命令行窗口,我认为批处理脚本的执行不会继续。不过方法很有趣,谢谢!我这里也有同样的问题。。。