我正在扩展ANT构建脚本,以允许TeamCity构建代理运行Selenium测试。
在这样做的时候,有一个服务器需要从selenium开始,而不是在结束时关闭。因此,我添加了一个额外的目标,在每个TC构建结束时对exe名称执行taskkill。
taskkill是否需要exe的绝对路径,因为以下内容不起作用;
<target name="shutdown.server" depends="init.properties" description="Shutdown the server after Selenium">
<exec osfamily="windows" executable="cmd.exe" spawn="true">
<arg line="taskkill /f /t /im app.exe"/>
</exec>
</target>
这个过程似乎有几个孩子,这就是为什么我选择了/f /t
,但正如我所说的,目前没有一个关闭。
这很简单;
<target name="shutdown.server" depends="init.properties" description="Shutdown the server after Selenium">
<exec executable="taskkill">
<arg line="/im app.exe /f /t"/>
</exec>
</target>
这是一个旧的帖子,通常我使用timeout="milliseconds"
,但对于一个长时间运行的进程,我发现杀死一个Ant启动的进程(特别是在Eclipse中的java.exe
线程)的最好方法是使用pskill.exe。
只需将pskill64.exe加载到项目目录中,并运行以下命令Ant build。
<project name="project" default="shutdown.java.tasks" basedir="../">
<target name="shutdown.java.tasks">
<exec executable="path.to.pskill.in.your.projectpskill64">
<arg value="java.exe" />
</exec>
</target>
典型输出为:
shutdown.java:
[exec] PsKill v1.16 - Terminates processes on local or remote systems
[exec] Copyright (C) 1999-2016 Mark Russinovich
[exec] Sysinternals - www.sysinternals.com
[exec] 8 processes named java.exe killed.
构建成功总时间:387毫秒