自动化框架---定时任务(执行BAT脚本进行构建)

定时任务代码:

public class QuartzJob implements Job{
    static Logger log=Logger.getLogger(QuartzJob.class);
    public void killProcess() {  
        Runtime rt = Runtime.getRuntime();  
        Process p = null;  
        try {  
            rt.exec("cmd.exe /C start wmic process where name='cmd.exe' call terminate");  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }
    @Override
    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        String[] cmd={"cmd.exe","/C","start","/b",System.getProperty("user.dir")+File.separator+"build.bat"};
        Process process = null;
        try {
            process = Runtime.getRuntime().exec(cmd);
            InputStream in=process.getInputStream();
            int c=0;
            while(c!=-1)
            {
                try {
                    c=in.read();                    
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            in.close();
            process.waitFor();
            int i = process.exitValue();  
            if (i == 0) {  
                System.out.println("执行完成.");  
                TestReport report=new TestReport();
                System.out.println(report.getFailedTests().size()+""+report.getSkippedTests().size()+""+report.getPassedTests().size());
            } else {  
                System.out.println("执行失败.");  
            }  
            process.destroy();  
            process = null;
            new QuartzJob().killProcess();
        } catch (IOException e1) {
            e1.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }       

        
    }  
    
}

执行任务代码:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.JobDetailImpl;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.triggers.CronTriggerImpl;

public class Runjob {     
    
           
     
     public static void RunJob(String time) throws SchedulerException, ParseException {
         SchedulerFactory sf = new StdSchedulerFactory(); 
         Scheduler sched = sf.getScheduler();
         @SuppressWarnings("deprecation")
         JobDetail job =new JobDetailImpl("job1", "group1", QuartzJob.class);         
         @SuppressWarnings("deprecation")
         CronTrigger trigger = new CronTriggerImpl("trigger1", "group1");  
         ((CronTriggerImpl) trigger).setCronExpression(time);  
         Date ft = sched.scheduleJob(job, trigger);  
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");  
         System.out.println(  
        job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: " + trigger.getCronExpression());  
         
         // 开始执行,start()方法被调用后,计时器就开始工作,计时调度中允许放入N个Job  
         sched.start();  
         try {  
             // 主线程等待一分钟  
             Thread.sleep(60L * 1000L);  
         } catch (Exception e) {  
         }  
         // 关闭定时调度,定时器不再工作  
         //sched.shutdown(true);        
         
    }
     
     public static void main(String[] args) throws Exception{
        RunJob("0 07 22 ? * *");
    }    
     
}
原文地址:https://www.cnblogs.com/mlmy/p/6341440.html