Maven 如何启动独立的quartz作业
我正在使用quartz在我的服务器上设置一些cron。但我如何在服务器上执行这个文件,以便可以调度cron。我试着使用插件Maven 如何启动独立的quartz作业,maven,cron,quartz-scheduler,Maven,Cron,Quartz Scheduler,我正在使用quartz在我的服务器上设置一些cron。但我如何在服务器上执行这个文件,以便可以调度cron。我试着使用插件 “org.codehaus.mojo”来执行java文件。但当我以deamon的身份运行mvn安装时,它总是会创建一个新的触发器。如何在“mvn安装”上重新初始化cron。按照您编写主方法的方式,应用程序将在调度作业后立即退出。虽然quartz任务在不同的线程中调度,但当进程结束时,它会终止所有活动线程 只需在调度器.scheduleJob之后添加while(true){}
“org.codehaus.mojo”来执行java文件。但当我以deamon的身份运行mvn安装时,它总是会创建一个新的触发器。如何在“mvn安装”上重新初始化cron。按照您编写主方法的方式,应用程序将在调度作业后立即退出。虽然quartz任务在不同的线程中调度,但当进程结束时,它会终止所有活动线程 只需在
调度器.scheduleJob
之后添加while(true){}
语句,即可保持应用程序运行
现在,让maven构建您的jar并在运行“mvn clean install-DskipTests”后执行
java-jar myjar.jar
,它永远不会返回到终端。这没有任何意义。maven只是构建您的项目。特别是对于-DskipTests=true
(您有“=true”部分吗?),不会执行任何代码。您的POM可能还有其他问题。如果您的意思是当您运行jar时,它不会返回到终端,那么这就是while的结果(true)。您的应用程序在被中断(即Ctrl-C)之前不会退出。如果您想让它在无人参与的情况下运行,请告诉我您也有一些选项,包括只使用普通的旧CRON(linux)或Windows任务管理器运行jar。更优雅的(但也更Rube-Golberg)是创建一个服务。感谢您的快速响应,是的,我希望在服务器上无人值守地运行该服务,无论何时,我都将运行“mvn安装”在服务器上,它将终止先前的触发器并设置新的触发器。最简单的方法是不使用quartz—只使用执行jar和退出的操作系统调度程序(HelloJob.java中的任何内容)。如果你真的需要一个服务,我已经使用了ApacheProcrun(我假设你在Windows上)。看看:如果它作为服务运行,请保持while(true)循环,这样它就不会退出。当您停止服务时,您将中断该循环。
public class CronTriggerExample
{
public static void main(String[] args) throws Exception
{
try
{
JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("dummyJobName", "group1").build();
Trigger trigger =
TriggerBuilder.newTrigger().withIdentity("dummyTriggerName", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")).build();
// schedule it
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
return;
}
catch (SchedulerException e)
{
e.printStackTrace();
}
}
}