学习了Maven的插件开发后,看了下我们项目的maven管理。得出一些结论:
一. 一点基础
1. 当你省略了 插件的 packageId和version等,maven就会多执行一些查找的操作,所以命令不是越精简越好。精简意味着你节省的时间,maven都会将它花在查找和遍历上。
2.-DgroupId=com.job.maven.plugins -DartifactId=greeting-maven-plugin
DgroupId 为 项目的目录,也是发布到本地后的maven库路径 DartifactId 为项目名称。
二.选择一个插件解析项目结构
1. 如何将你的default配置写入到antx.perpties?
项目中配置了如下插件,主要作用是在build的时候将task.schedule.clearLogData2这种参数等set为相应值,下
面详细介绍这种插件的作用和对应pom文件解析。
com.job.maven.plugins maven-autoconf-plugin 0.2 process-resources config
对应packaging项的配置,一般总体的parent配置文件如下:
aa.project com.job.parent 1.2.0 parent.project pom
而对应的子项目下则定义为 jar包或者war包,如下:
com.job.child1 child1.webapp war
packaging有四种取值:pom,war,jar等,对于总控的pom 它是用来继承的,不需要将${变量}的这种形式进行一个配置,而对于子项目是需要的,我们来看其插件源码。
原理是:如果找到总控的pom,则直接跳过,如果是war包或者jar包等子项目的,则将其default值写入config.perperties,并写到child1.properties。
2. 如何将生成的config.perperties读出来,什么时候读出来?
写到config.properties里面的变量,会在容器启动阶段将其缓存起来,我们build后的需要变量的xml文件并没有直接存值.打开一个jar包的xml配置可以看到
${hessian.url.esbPriceService}" /> -
所以这个是动态加载的过程,靠的是Spring配置的 PropertyResourceConfigurer,
classpath*:risk.properties GB2312
这里我想到,如果这样的话,发布的时候配置文件更新,是可以直接通过更新config.properties,并刷新下内存来实现,这里恐怕就要借鉴规则引擎后台刷新内存的方式了。(本来是静态的,改成动态的还是有问题的,比如,如何在改变时禁止外部访问,可以设计为动态的,类似jboss的开发模式或者jtools)