如何使gradle任务执行两次而不是显示最新状态?

时间:2017-07-10 18:49:22

标签: gradle

我在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..");
     }
 }

2 个答案:

答案 0 :(得分:1)

运行gradle killTomcat --rerun-tasks

CLI Docs

中查看详情

答案 1 :(得分:0)

此方法有问题,但如果必须,您可以禁用最新检查。在任务定义中,放置outputs.upToDateWhen { false }。你的问题很模糊,所以我不清楚你想如何运行两次任务。如果您没有想到这一点,请发布您的build.gradle并明确指定在构建生命周期中何时运行此任务。

也就是说,创建JVM是为了将代码与主机系统分离。这个任务,以及在主机系统上杀死Tomcat进程的方法都违反了Java的创建方式,更不用说这在Windows上不起作用了。如果您需要网络容器进行测试,请参阅embedded tomcatarquillian