自动化配置工具antx-autoconfig

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

文件结构

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

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

准备工作

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

1、auto-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <group name="test-core">
        <property name="test_db_host" />
        <property name="test_db_port" />
        <property name="test_db_database" />
        <property name="test_db_username" />
        <property name="test_db_password" />
        <property name="test_db_maxActive" />
        <property name="test_db_initialSize" />
        <property name="test_db_minIdle" />

        <property name="test_thread_corePoolSize"/>
        <property name="test_thread_maxPoolSize"/>
        <property name="test_thread_queueCapacity"/>
    </group>
    <script>
        <generate template="core.properties.vm" destfile="config/core.properties" charset="UTF-8"/>
        <generate template="jdbc.properties.vm" destfile="config/jdbc.properties" charset="UTF-8"/>
    </script>
</config>

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指定引用变量配置文件

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>com.alibaba.citrus.tool</groupId>
            <artifactId>autoconfig-maven-plugin</artifactId>
            <version>${autoconfig-plugin.version}</version>
        </plugin>
    </plugins>
</pluginManagement>

 

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <antx_properties>${project.basedir}/../deploy/antx/dev.properties</antx_properties>
        </properties>
    </profile>
</profiles>

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

<build>
    <plugins>
        <!-- autoconfig -->
        <plugin>
            <groupId>com.alibaba.citrus.tool</groupId>
            <artifactId>autoconfig-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>autoconfig</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <exploding>true</exploding>
                <userProperties>${antx_properties}</userProperties>
            </configuration>
        </plugin>
    </plugins>
</build>

以上。基于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

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值