自动化配置工具antx-autoconfig

来源:互联网 发布:童装淘宝店好做吗 编辑:程序博客网 时间:2024/05/22 06:31

前言

1、配置参数原始做法是配置一个文件,在不同环境间手动修改,这种做法容易出错,且随着环境增多配置文件线性增长。

2、第二种通过maven提供的profile机制,但是这样会在配置中将数据库、redis等用户名密码暴露出去,如果项目要托管在git上就危险了

3、最近接触的一种是阿里提供的maven插件,现已开源,通过它可以实现不同环境使用不同配置进行打包,这样就安全的多。

最新版本是1.2

<dependency>    <groupId>com.alibaba.citrus.tool</groupId>    <artifactId>antx-autoconfig</artifactId>    <version>1.2</version></dependency>

使用方法

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

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>
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.Drivertest.jdbc.url         = jdbc:mysql://${test_db_host}:${test_db_port}/${test_db_database}?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNulltest.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}
上面的script脚本配置,是将根据core.properties.vm模板的内容生成目标文件,模板里的${test_thread_corePoolSize}一定要与auto-config.xml中property的name对应。

以下是插件的引入,先在父包引入插件

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

配置profile

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

然后是在子模块的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对应。

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

linux环境如果要修改war包的配置,通过以下命令:

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

原创粉丝点击