自动化配置工具antx-autoconfig

也许有人说通过maven提供的profile机制,已经可以非常方便的切换不同环境的参数配置,但是这样会在配置中将数据库、redis等用户名密码暴露出去,如果项目要托管在git上就危险了。最近接触了阿里提供的maven插件autoconfig-maven-plugin,通过它可以实现不同环境使用不同配置进行打包,这样可以保证参数的安全。autoconfig是针对目标文件的配置工具,简单而实用的小工具。

文件结构

使用auto-config,需要按照一定的格式来写,配置文件结构如下图

自动化配置工具antx-autoconfig_第1张图片

/META-INF/autoconf目录用来存放AutoConfig的描述文件,以及可选的模板文件。
auto-config.xml是用来指导AutoConfig行为的关键描述文件。

准备工作

需要配置以下几个文件:描述文件auto-config.xml和若干配置文件的模板xxx.properties.vm

1、auto-config.xml



    
        
        
        
        
        
        
        
        

        
        
        
    
    

2、模板core.properties.vm和jdbc.properties.vm

core.properties.vm

test.thread.corePoolSize  = ${test_thread_corePoolSize}
test.thread.maxPoolSize   = ${test_thread_maxPoolSize}
test.thread.queueCapacity = ${test_thread_queueCapacity}

jdbc.properties.vm

test.jdbc.driver      = com.mysql.jdbc.Driver
test.jdbc.url         = jdbc:mysql://${test_db_host}:${test_db_port}/${test_db_database}?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
test.jdbc.username    = ${test_db_username}
test.jdbc.password    = ${test_db_password}
test.jdbc.maxActive   = ${test_db_maxActive}
test.jdbc.initialSize = ${test_db_initialSize}
test.jdbc.minIdle     = ${test_db_minIdle}

模板里的${test_thread_corePoolSize}一定要与auto-config.xml中property的name对应。

一般来说,不要在父pom.xml中设置AutoConfig,因为这个设置会作用在每个子模块上,导致不必要的AutoConfig执行,只在生成最终目标文件的子模块pom.xml中设置就可以了。对于一个web项目,在生成war包的子模块中设置AutoConfig plugin。

3、父pom中安装插件,指定版本autoconfig-plugin.version为1.2,profile指定引用变量配置文件


    
        
            com.alibaba.citrus.tool
            autoconfig-maven-plugin
            ${autoconfig-plugin.version}
        
    

 


    
        dev
        
            false
        
        
            ${project.basedir}/../deploy/antx/dev.properties
        
    

4、必须的子模块pom.xml引入


    
        
        
            com.alibaba.citrus.tool
            autoconfig-maven-plugin
            
                
                    package
                    
                        autoconfig
                    
                
            
            
                true
                ${antx_properties}
            
        
    

以上。基于profile的antx_properties配置,我们可以随意指定参数的配置文件,注意点是auto-config.xml的属性名要与dev.properties对应。userProperties中指定的antx_properties是固定写法。

可以在Idea里保存配置mvn package -P dev,打包时就会自动生成core.properties和jdbc.properties文件,config文件夹要手动创建好。

linux环境如果要修改war包的配置,在war同一级模流执行以下命令:

mvn autoconf:autoconf -Dproperties=/home/admin/testDemo/test/antx.properties -Dpath=testDemo.war/

参考:http://openwebx.org/docs/autoconfig.html#d0e17303

 

你可能感兴趣的:(maven)