我在build.gradle文件中添加了一个任务“killTomcat”来杀死正在运行的tomcat进程。 它执行几个任务,然后启动tomcat进行测试执行,然后停止它。有时候,它无法阻止tomcat。所以,我想在tomcat运行时执行killTomcat。但它没有执行任务,而是输出“UP-TO-DATE”状态。
如何让任务执行两次?
task tomcatKill {
println(':tomcatKill');
try{
def process_id = ['/bin/bash', '-c', /ps aux | grep 'tomcat' | grep -v 'grep'| awk '{print $2}'/].execute();
process_id.waitFor();
def pid = process_id.text
String killCmd = 'kill -9 ';
killCmd = killCmd.concat(pid.toString());
killCmd.execute();
}catch(Exception ex) {
println("No tomcat running..");
}
}
答案 0 :(得分:1)
运行gradle killTomcat --rerun-tasks
答案 1 :(得分:0)
此方法有问题,但如果必须,您可以禁用最新检查。在任务定义中,放置outputs.upToDateWhen { false }
。你的问题很模糊,所以我不清楚你想如何运行两次任务。如果您没有想到这一点,请发布您的build.gradle
并明确指定在构建生命周期中何时运行此任务。
也就是说,创建JVM是为了将代码与主机系统分离。这个任务,以及在主机系统上杀死Tomcat进程的方法都违反了Java的创建方式,更不用说这在Windows上不起作用了。如果您需要网络容器进行测试,请参阅embedded tomcat或arquillian