Published on

基于Quartz的定时任务UI组件

Authors

需求

我需要实现一个基于springbootquartz-ui组件,可以通过web界面来管理定时任务。然后打包成jar文件,提供给使用quartz的项目。

基本思路

  1. 去github上逛一圈,有现成的就拿来试试,改改直接用,不然还能怎么样,难道自己生写
  2. 好吧,如果没有我就去啃 quartz 的 API,然后自己生写

于是很快我就找到了 quartz-web-ui-kitReadme在这个哥们儿的个人博客上,但链接已经访问不到了,不过找到一个cnblogs的基于Quartz编写一个可复用的分布式调度任务管理WebUI组件。代码拉下来研究了一下,结构清晰,命名舒服,maven的依赖也没什么多余的,直击要害,就只解决任务管理问题。模版用freemarkercssjsuikitjquery。简单明了,感谢分享,就用您这个了。

跑完SQL脚本,很顺利就运行起来了,测试了一下功能,除了禁用的任务还能点触发,后台会报错,倒也没啥影响。

接下来开始动手改: 1、这个组件需要打成jar,需要的项目就增加一个依赖。 2、上传到nexus私服。

问题和解决办法

1、项目无法直接加载jar中静态文件,打包时需要将静态文件放在META-INF/resources目录下。

pom.xmlbuild 下增加

<resources>
	<resource>
		<directory>${basedir}/src/main/resources/templates</directory>
		<targetPath>META-INF/resources/</targetPath>
		<includes>
			<include>**/**</include>
		</includes>
	</resource>
</resources>

application.yml中也要对应修改template-loader-path的路径

spring:
  freemarker:
    cache: false
    charset: UTF-8
    check-template-location: true
    content-type: text/html
    expose-request-attributes: true
    expose-session-attributes: true
    request-context-attribute: request
    suffix: .ftl
    template-loader-path: classpath:/META-INF/resources/
    prefer-file-system-access: false

2、配置文件也需要打包进去,继续在pom.xmlresources 下增加

	<resource>
		<directory>${basedir}/src/main/resources/</directory>
		<includes>
			<include>**/*.yml</include>
			<include>**/*.factories</include>
		</includes>
	</resource>

3、发现jar中的配置文件不生效,被项目的application.yml覆盖了

将配置文件放在src/main/resources/config目录下即可,参考Spring官方文档

24.3 Application Property Files

SpringApplication loads properties from application.properties files in the following locations and adds them to the Spring Environment:

A /config subdirectory of the current directory The current directory A classpath /config package The classpath root

参考链接

差不多了,有啥后面再补充。今天周五,下午划水写博客,下班回家玩羊娃子喜欢的周五夜放克。