09 maven构建标签Build
1 概述本质上配置的Build标签是对超级POM配置的Build标签的叠加。(猜想 sofaboot的目录结构也是通过build标签定义了约定的目录结构。) 2 作用配置约定的目录结构Dir 12345678910111213141516171819<build> <sourceDirectory>/Users/yinkanglong/work/notes/maven/maven源码/project03-maven-test/src/main/java</sourceDirectory> <scriptSourceDirectory>/Users/yinkanglong/work/notes/maven/maven源码/project03-maven-test/src/main/scripts</scriptSourceDirectory> <testSourceDirectory>/Users/yinkanglong/work/notes/maven/maven源码/project03-mave...
11 maven私服Nexus
用于快速的模块化的版本迭代。 1 步骤 下载nexus的执行程序。也可以直接下载nexus的docker,然后运行。 运行启动nexus执行程序,并查看nexus占用的端口号。 1netstat anl |grep nexus 然后登录nexus服务器的管理端。 复制黏贴自己的私服地址和用户名密码到settings.xml当中。 配置当前工程pom中的distributionManagement 执行部署。默认情况下,mvn deploy会不数到上述配置中的仓库里。 使用别人部署的jar。必须配置别人部署的nexus仓库。 2 概述nexus仓库的仓库 nexus仓库的类型 nexus仓库的名称 3 实验实践
12 maven依赖冲突
jar包冲突问题1 解决依赖冲突冲突的引入 编订依赖列表的时候需要解决依赖冲突 在引入多个jar包时产生了冲突 冲突的本质 统一jar包,不同版本(名称不一样,版本仲裁机制无法生效,导入了多个包,或者仲裁的包错误) 不同jar包包含同类名(全限定名相同的类) 2 表现形式表现形式:整个错误信息全部是框架、第三方工具包中的类报错,往往就是jar包的问题引起的。并且maven的版本仲裁机制无法生效的情况下。 抛异常:找不到类 java.lang.ClassNotFoundException:编译过程找不到类 java.lang.NoClassDefFoundError:运行过程找不到类 java.lang.LinkageError:不同类加载器分别加在的多个类具有相同的全类名。 抛异常找不到哦啊方法 java.lang.NoSuchMethodException:反射过程找不到类。 经过仲裁选中了版本,但是显示包中没有该版本的方法。 没有报错单结果不对 两个 jar 包中的类分别实现了同一个接口,这本来是很正常的。但是问题在于:由于没有注意命名规范,两个不同实现类恰巧是同...
13 maven导入普通jar
1 概述提出问题而实际开发中确实有可能用到一些 jar 包并非是用 Maven 的方式发布,那自然也没法通过 Maven 导入。 此时如果我们能够拿到该 jar 包的源码那还可以自己建一个 Maven 工程,自己打包。 2 手动打包一个可执行文件 生成.class 文件。利用javac命令进行编译 123➜ src git:(master) ✗ javac com/ykl/Main.java -d ./out/➜ src git:(master) ✗ lscom out 编写manifest文件。manifest文件命名和格式按照要求,可以少写几个参数。 123➜ out git:(master) ✗ cat MANIFEST.MF Manifest-Version: 1.0Main-Class: com.ykl.Main jar打包文件。jar命令在工作目录下执行。out/目录下打包所有内容。如果没有主类,则使用jar -cvf。 如果有主类则使用jar -cvfm 1234567➜ out git:(master) ✗ jar -cvfm h...
1 概述
概述 一篇就够了: https://zhuanlan.zhihu.com/p/306591082 1 概述什么是QuartzQuartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。简单地创建一个org.quarz.Job接口的Java类,Job接口包含唯一的方法: 1public void execute(JobExecutionContext context) throws JobExecutionException; 在Job接口实现类里面,添加需要的逻辑到execute()方法中。配置好Job实现类并设定好调度时间表,Quartz就会自动在设定的时间调度作业执行execute()。 整合了Quartz的应用程序可以重用不同事件的作业,还可以为一个事件组合多个作业。Quartz通过属性文件来配置JDBC事务的数据源、全局作业、触发器侦听器、插件、线程池等等。 核心概念 Job 表示一个工作,要执行的具...
2 CronTrigger
3 CronTrigger类Quartz有两大触发器,除了上面使用的SimpleTrigger外,就是CronTrigger。CronTrigger能够提供复杂的触发器表达式的支持。CronTrigger是基于Unix Cron守护进程,它是一个调度程序,支持简单而强大的触发器语法。 使用CronTrigger主要的是要掌握Cron表达式。Cron表达式包含6个必要组件和一个可选组件,如下表所示。 位置 含义 允许的特殊字符 1 秒(0~59) , - * / 2 分(0~59) , - * / 3 小时(0~24) , - * / 4 日期(1~31) , - * / ? L W C 5 月(JANDEC或112) , - * / 6 星期(SUNSAT或17) , -&...
4 JobStore
Job Stores2018-09-18 14:36 更新JobStore负责跟踪您提供给调度程序的所有“工作数据”:jobs,triggers,日历等。为您的Quartz调度程序实例选择适当的JobStore是重要的一步。幸运的是,一旦你明白他们之间的差异,那么选择应该是一个非常简单的选择。 您声明您提供给用于生成调度程序实例的SchedulerFactory的属性文件(或对象)中您的调度程序应使用哪个JobStore(以及它的配置设置)。 切勿在代码中直接使用JobStore实例。由于某种原因,许多人试图这样做。JobStore用于Quartz本身的幕后使用。你必须告诉Quartz(通过配置)使用哪个JobStore,但是你应该只在代码中使用Scheduler界面。RAMJobStoreRAMJobStore是使用最简单的JobStore,它也是性能最高的(在CPU时间方面)。RAMJobStore以其明显的方式获取其名称:它将其所有数据保存在RAM中。这就是为什么它是闪电般快的,也是为什么这么简单的配置。缺点是当您的应用程序结束(或崩溃)时,所有调度信息都将丢失 - 这意味...
3 配置文件
5 配置文件上述没有用到任何的配置文件。Quartz支持配置文件,它的好处是比编写代码简单,且修改后不需要重新编译源码。 配置quartz.properties特性文件quartz.properties文件定义了Quartz应用运行时行为,还包含了许多能控制Quartz运转的属性。它应放在工程的classpath中。 1234567891011121314151617181920212223242526272829303132333435363738394041代码清单5:quartz.properties#============================================================================ # Configure Main Scheduler Properties #============================================================================# 实例名org.quartz.scheduler.instanceName = Quart...
6 JobListener
Listeners是您创建的对象,用于根据调度程序中发生的事件执行操作。您可能猜到,TriggerListeners接收到与触发器(trigger)相关的事件,JobListeners 接收与jobs相关的事件。 与触发相关的事件包括:触发器触发,触发失灵(在本文档的“触发器”部分中讨论),并触发完成(触发器关闭的作业完成)。 org.quartz.TriggerListener接口 public interface TriggerListener { public String getName(); public void triggerFired(Trigger trigger, JobExecutionContext context); public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context); public void triggerMisfired(Trigger trigger); public void triggerComplete(Trigger trigge...
5 JobDataMap
JobDataMap https://blog.csdn.net/qq_30859353/article/details/120533838 JobDataMap中可以包含不限量的(序列化的)数据对象,在job实例执行的时候,可以使用其中的数据;JobDataMap是Java Map接口的一个实现,额外增加了一些便于存取基本类型的数据的方法。 将job加入到scheduler之前,在构建JobDetail时,可以将数据放入JobDataMap,如下示例: 1234567891011121314151617181920212223242526 // define the job and tie it to our DumbJob class JobDetail job = newJob(DumbJob.class) .withIdentity("myJob", "group1") // name "myJob", group "group1" .usingJobData(&quo...














