在项目中我们需要对应不同的(开发,测试,生产)环境定制不同的参数(如:在开发,测试环境中我们的日志级别会设置成debug这样方便我们调试.但是在生产环境中我们的日志通常都不可能是debug级别,这时我们就需要对应不同的环境设置不同的参数,并且每次都会进行该繁琐的工作).
fastconfig可以通过定制参数,在打包之前自动根据环境替换对应的参数设置,减少手动配置的工作量. 在之前有AutoConfig及portable-config-maven-config去做这样的工作.
fastconfig的优点:
###样例
- pom.xml配置插件
<plugin>
<groupId>org.skfiy.maven.plugin.fastconfig</groupId>
<artifaceId>fastconfig-maven-plugin</artifaceId>
<version>1.0</version>
<executions>
<execution>
<id>config-resources</id>
<goals>
<goal>configure</goal>
</goals>
</execution>
</executions>
<configuration>
<config>fast-config.xml</config>
[<encoding>UTF-8</encoding>]
[<outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>]
</configuration>
</plugin>
- config fastconfig配置描述
- encoding 目标文件的编码
- outputDirectory 文件的输入目录
- fast-config.xml配置文件
<fast-config>
<config-file path="test.properties">
<replacement expression="test.name">fastconfig-unit hello</replacement>
<replacement expression="test.version">0.0.1</replacement>
</config-file>
<config-file path="test.xml">
<replacement expression="/server/port">80</replacement>
<replacement expression="//host[@id='1']">192.168.1.1</replacement>
<replacement expression="//host[@id='2']">192.168.1.2</replacement>
<replacement expression="/server/mode/@value">run</replacement>
</config-file>
<config-file path="test.json">
<replacement expression="$.store.book[?(@.author='Evelyn Waugh')].author">Kevin Zou</replacement>
<replacement expression="$.store.bicycle.color">${hello.param}</replacement>
<replacement expression="$.store.bicycle.price">29.99</replacement>
</config-file>
<config-file path="test.html" mode="regex">
<replacement expression="<p>(.*?)</p>"><a>$1__Testing__\\__\$2</a></replacement>
</config-file>
</fast-config>
-
config-file节点配置所需要替换的配置文件信息
- path属性表示配置文件的路径
- mode替换模式(属性值:property, xpath, jsonpath, regex), 如果文件的后缀名为.properties, .xml, .json时fastconfig会根据文件后缀名自动识别替换模式. 如果你替换的模式为regex那则必须显示声明fastconfig无法自识别, 因为该模式可以用于任何文本文件的替换工作.
-
replacement节点具体的替换表达式及替换结果
- expression替换表达式支持(property, xpath, jsonpath, regex)
- #text替换的结果(可使用Maven参数,如**${hello.param}**).