maven 插件之 AutoConfig 工具使用笔记
AutoConfig 是一款 maven 插件,主要用于 Maven 项目打包使用。在我们的工作中,会将自己写的代码打成 jar 包或者 war 包发布到各种环境上。一般地,不用的环境所使用的数据库、缓存的配置是不同的。我们完全可以手工修改不用环境的配置,当然这种做法是非常耗费精力的。好在, maven 为我们提供了 profile 机制,但我在工作中还觉得它不够好,因为它把我的数据库用户名和密码配置在 pom.xml 文件中,pom 文件又被 git 所管理,其实就暴露了数据库连接的配置。于是我找到了一款非常好用的 maven 插件,实现不同环境使用不同的配置进行打包,同时又不会将 pom.xml 文件纳入 git 仓库管理。
以下所写的均是基于下面的这篇资料整理的一份操作笔记,供自己查阅和别人参考。
第 13 章 AutoConfig工具使用指南
http://openwebx.org/docs/autoconfig.html
操作步骤:
1、将项目的打包方式设置为 war ;
2、建立打包方式为 war 的文件夹和文件:
3、编写 auto-config.xml 文件,示例代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<config><group> <property name="datasource.slave.host" defaultValue="127.0.0.1" description="datasource slave host" /> <property name="datasource.slave.port" defaultValue="3306" description="datasource slave port" /> <property name="datasource.slave.db" defaultValue="read" description="datasource slave db" /> <property name="datasource.slave.username" defaultValue="root" description="datasource slave username" /> <property name="datasource.slave.password" defaultValue="123456" description=" datasource slave password" /> <property name="datasource.slave.maxconn" defaultValue="50" description="datasource slave maxconn" /> <property name="datasource.slave.minconn" defaultValue="25" description="datasource slave minconn" /> </group> <group> <property name="datasource.master.host" defaultValue="127.0.0.1" description="datasource master host" /> <property name="datasource.master.port" defaultValue="3306" description="datasource master port" /> <property name="datasource.master.db" defaultValue="read" description="datasource master db" /> <property name="datasource.master.username" defaultValue="root" description="datasource master username" /> <property name="datasource.master.password" defaultValue="123456" description="datasource master password" /> <property name="datasource.master.maxconn" defaultValue="50" description="datasource master maxconn" /> <property name="datasource.master.minconn" defaultValue="25" description="datasource master minconn" /> </group> <script> <generate template="application.properties.vm" destfile="WEB-INF/classes/application.properties" /> </script> </config>
- 注意:上面的 script 子标签,将根据 application.properties.vm 模板文件的内容去生成打包好的文件中的 WEB-INF/classes/application.properties 文件。
下面我们编写 application.properties.vm 模板文件。
4、编写 application.properties.vm 模板文件
datasource.slave.host=${datasource.slave.host}
datasource.slave.port=${datasource.slave.port} datasource.slave.db=${datasource.slave.db} datasource.slave.username=${datasource.slave.username} datasource.slave.password=${datasource.slave.password} datasource.slave.maxconn=${datasource.slave.maxconn} datasource.slave.minconn=${datasource.slave.minconn} datasource.master.host=${datasource.master.host} datasource.master.port=${datasource.master.port} datasource.master.db=${datasource.master.db} datasource.master.username=${datasource.master.username} datasource.master.password=${datasource.master.password} datasource.master.maxconn=${datasource.master.maxconn} datasource.master.minconn=${datasource.master.minconn}
- 注意:这里的 ${datasource.slave.host} 应该和第 3 步的 auto-config.xml 文件中配置的 property 子节点 name 属性对应。
5、编写 pom.xml 文件引入 autoconfig 插件
(1)将该插件的 autoconfig 目标绑定到 maven 生命周期的 package 阶段
<plugin><groupId>com.alibaba.citrus.tool</groupId> <artifactId>autoconfig-maven-plugin</artifactId> <version>1.2</version> <configuration> <userProperties>${autoconfig.path}/${autoconfig.file}</userProperties> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>autoconfig</goal> </goals> </execution> </executions> </plugin>
- (2)为了使得配置更加灵活,我们配置属性 autoconfig.path 和 autoconfig.file
<autoconfig.path>${user.home}/antx-config/${artifactId}/${devModel}</autoconfig.path>
<autoconfig.file>antx.properties</autoconfig.file>
其中,${user.home} 是 maven 定义的系统属性,这里代表操作系统的宿主目录。
(3)下面定义 profile
<profiles><!-- 开发环境:本机 --><profile> <id>dev</id> <properties> <devModel>dev</devModel> <autoconfig.file>antx.properties</autoconfig.file> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!-- 内测环境:内网 192.168.12.250 --> <profile> <id>beta</id> <properties> <devModel>beta</devModel> <autoconfig.file>antx.properties</autoconfig.file> </properties> </profile> <!-- 集成测试环境:lyced --> <profile> <id>inte</id> <properties> <devModel>inte</devModel> <autoconfig.file>antx.properties</autoconfig.file> </properties> </profile> <!-- 生产环境:17english --> <profile> <id>pro</id> <properties> <devModel>pro</devModel> <autoconfig.file>antx.properties</autoconfig.file> </properties> </profile> </profiles>
以上就基本完成了 autoconfig 的配置。我们执行 maven 的 package 目标,就可以看到 autoconfig 生效了。
如果你使用 IntelliJ IDEA 作为开发工具,你可以使用下面的方式执行 maven 的 package 目标,带上 profile 。
注意事项:
1、文件夹要自己建立,autoconfig 插件不会帮你创建文件夹;
maven 插件之 AutoConfig 工具使用笔记相关推荐
- mybatis代码自动生成工具之maven插件mybatis-generator-maven-plugin(mybatis逆向工程)
mybatis自动代码生成工具maven插件可以帮助我们轻松的生成pojo.dao.mapper.xml文件,相比于mybatis-generator等其他方式方便许多,话不多说,上代码 先看一下整体 ...
- 动力节点笔记-Maven 自动化的构建工具
目录 Maven 自动化的构建工具 第一章 Maven简介 1.1 软件开发中的阶段 1.2 Maven能做什么 1.3 没有使用maven怎么管理依赖 1.4 什么是maven 1.5 maven中 ...
- Junit 单元测试生成工具Maven插件
junit-generator 介绍 一个基于JUnit,Freemarker,Mockito,Maven等技术实现的单元测试类脚手架生成工具Maven插件. 需求 我们在测试驱动开发过程中,总会写一 ...
- java生成单元测试工具_junit-generator Junit 单元测试生成工具Maven插件
junit-generator 介绍 一个基于JUnit,Freemarker,Mockito,Maven等技术实现的单元测试类脚手架生成工具Maven插件. 需求 我们在测试驱动开发过程中,总会写一 ...
- AutoConfig工具使用
下载安装Auto工具包: http://code.taobao.org/mvn/repository/com/alibaba/citrus/tool/antx-autoconfig/1.0.9/ant ...
- maven 插件在线安装
NO.1 在Eclipse中安装Maven插件安装详解 前言 本来是没打算写博客的,作为一个13年毕业的菜鸟,自认为水平太渣写不出什么好文章,但是前些日子看到一篇鼓励性质的文章说,技术人员的成长靠的就 ...
- AutoConfig工具使用指南
13.1. 需求分析 13.1.1. 解决方案 13.2. AutoConfig的设计 13.2.1. 角色与职责13.2.2. 分享二进制目标文件13.2.3. 部署二进制目标文件13.2.4. A ...
- 常用Maven插件介绍(上)
转自 : http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务, ...
- 用Maven插件生成Mybatis代码
现在代码管理基本上是采用Maven管理,Maven的好处此处不多说,大家用百度搜索会有很多介绍,本文介绍一下用Maven工具如何生成Mybatis的代码及映射的文件. 一.配置Maven pom.xm ...
最新文章
- 主宰这个世界的10种算法
- 源哥每日一题第十七弹 poj 1568 Alpha-Beta剪枝
- QT的QSet类的使用
- java改变变量编码方式_Java 10将如何改变您的编码方式
- WinForm - 两个窗体之间的方法调用
- 利用延迟关联或者子查询优化超多分页场景
- 数据结构之图的遍历:广度优先遍历(BFS)
- 这是可用于下一个项目的React Native工具列表
- 关于BaseAdapter在listView中的使用
- 中国检测开关行业市场供需与战略研究报告
- python中confIgparser模块学习
- Robotium在输入框输入文字
- Nmap命令参数介绍
- 【模拟电路知识】运算放大器没有反馈电路——做电压比较器应用
- SpringBoot项目 四种读取properties文件的方式
- X书app数美-sid分析
- 诺基亚WP7手机或10月发布 搭载新版系统
- Deep Depth Completion of a Single RGB-D Image(深度像素补全)全文机器翻译
- 电商那些年,我摸爬打滚出的高并发架构实战精髓(2017-03-27 YYQ DBAplus社群)
- 【HTML】DAY 2
热门文章
- PHP利用CURL_MULTI实现多线程
- CSS3 overflow-x 属性
- 【Android游戏开发之六】在SurfaceView中添加组件!!!!并且相互交互数据!!!!...
- 微软对学生免费提供Visual Studio等开发软件(包括中国)
- 组合模型---贝叶斯模型平均
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.9. GIN 和 GiST 索引类型
- Django Web开发学习笔记(4)
- 《现代教育技术》Win8版发布 项目总结
- 操作系统选择成固定模式 HTML5是潜在方向
- ubuntu LAMP安装