AutoConfig工具使用
下载安装Auto工具包:
- http://code.taobao.org/mvn/repository/com/alibaba/citrus/tool/antx-autoconfig/1.0.9/antx-autoconfig-1.0.9.tgz
- http://code.taobao.org/mvn/repository/com/alibaba/citrus/tool/antx-autoexpand/1.0.9/antx-autoexpand-1.0.9.tgz
tar zxvf autoconfig-1.0.9.tgz
tar zxvf autoexpand-1.0.9.tgz
cp autoconfig /usr/local/bin
cp autoexpand /usr/local/bin
------------------------------------------------------------------------------------------------------
引:<filter>${user.home}/antx.properties</filter>
用指定的properties文件(${user.home}/antx.properties
)中的值,替换上述文件行中的placeholders(占位符) AutoConfig不需要提取源码,也不需要重新build,即可改变目标文件中所有配置文件中placeholders的值,并对placeholder及其值进行检查。
AutoConfig Features:
名称 | 描述 |
---|---|
两种用法 |
|
对目标文件而不是源文件进行配置 |
|
验证和编辑properties |
|
|
|
|
创建war和jar包的AutoConfig机制,关键在于创建war或jar目标包中的/META-INF/autoconf/auto-config.xml
描述文件
-------------------------------------------------------------------------------------------------------------
AutoConfig描述文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<group> <property name="petstore.work"
description="应用程序的工作目录" />
<property name="petstore.loggingRoot"
defaultValue="${petstore.work}/logs"
description="日志文件目录" />
<property name="petstore.upload"
defaultValue="${petstore.work}/upload"
description="上传文件的目录" />
<property name="petstore.loggingLevel"
defaultValue="warn"
description="日志文件级别">
<validator name="choice"
choice="trace, debug, info, warn, error" />
</property> </group>
<script>
<generate template="WEB-INF/web.xml" />
<generate template="WEB-INF/common/resources.xml" />
</script>
</config>
|
定义properties |
定义property的验证规则(可选) |
|
生成配置文件的指令。 |
定义一个property的完整格式如下:
例如下定义一个property
<property
name="..."
[defaultValue="..."]
[description="..."]
[required="true|false"]
>
<validator name="..." />
<validator name="..." />
...
</property>
可用的property参数包括:
定义property时可用的参数如下:
参数名 | 说明 |
---|---|
name |
Property名称。 |
defaultValue (可选) |
默认值。默认值中可包含对其它property的引用,如${petstore.work}/logs |
description (可选) |
对字段的描述,这个描述会显示给deployer,这对他理解该property非常重要。 |
required (可选) |
是否“必填”,默认为true 。如果deployer未提供必填项的值,就会报错。 |
目前,有以下几种验证器:
可用的property验证规则如下
验证规则 | 说明 |
---|---|
<validator name="boolean" /> |
Property值必须为 |
<validator name="choice" |
Property值必须为choice所定义的值之一。 |
<validator name="email" /> |
Property值必须为合法的email格式。 |
<validator name="fileExist" |
Property值必须为某个存在的文件或目录。 如果指定了file,那就意味着property值所指的目录下,必须存在file所指的文件或子目录。 |
<validator name="hostExist" /> |
Property值必须为合法的IP地址,或者可以解析得到的域名。 |
<validator name="keyword" /> |
Property值必须为字母、数字、下划线的组合。 |
<validator name="number" /> |
Property值必须为数字的组合。 |
<validator name="regexp" |
Property值必须符合regexp所指的正则表达式。 其中,mode为匹配的方法:
如未指定mode,默认mode为contain。 |
<validator name="url" |
Property值必须是合法URL。 假如指定了 假如指定了protocols,那么URL的协议必须为其中之一; 假如指定了 |
描述文件中,每个<generate>
标签指定了一个包含placeholders的配置文件模板,具体格式为:
生成配置文件的指令:
<generate
template="..."
[destfile="..."]
[charset="..."]
[outputCharset="..."]
>
下面是参数的说明:
生成配置文件的指令参数:
参数名 | 说明 |
---|---|
template |
需要配置的模板名。 模板名为相对路径,相对于当前jar/war/ear包的根目录。 |
destfile (可选) |
目标文件。 如不指定,表示目标文件和模板文件名相同,但是默认生成路径为包下的根目录,即Base URL目录 |
charset (可选) |
模板的字符集编码。 XML文件不需要指定 对其它文件必须指定charset。 |
outputCharset (可选) |
目标文件的输出字符集编码。 如不指定,表示和模板charset相同。 |
AutoConfig的寻找模板的逻辑是:
如果在
auto-config.xml
所在的目录下发现模板文件,就使用它;否则在包的根目录中查找模板文件;如果两处均未找到,则报错。
书写模板是很简单的事,你只要:
把需要配置的点替换成placeholder:“
${property.name}
”。当然,你得确保property.name被定义在auto-config.xml
中。假如模板中包含不希望被替换的运行时的placeholder“
$
{...}
”,需要更改成“${D}
{...}
” 。
此外,AutoConfig模板其实是由Velocity模板引擎来渲染的。因此,所有的placeholder必须能够通过velocity的语法。
使用不符合velocity语法的placeholders
例如,下面的placeholder被velocity看作非法:
${my.property.2}
解决的办法是,改写成如下样式:
${my_property_2}
----------------------------------------------------------------------------------------------------------
Autoconfig工具的使用
最简单的AutoConfig命令
autoconfig petstore.war 无论petstore.war
是一个zip包还是目录,AutoConfig都会正确地生成其中的配置文件
AutoConfig会生成一个日志文件,就在auto-config.xml
所在的目录下,名字为:auto-config.xml.log
。
默认情况下,AutoConfig会按下列顺序查找user properties:
当前目录 ./antx.properties
当前用户HOME目录/antx.properties
你可以指定一个自己的properties文件,用下面的命令:
autoconfig ... –u my.props
你可以指定另一个输出文件或目录,这样,原来的文件或目录就不会被修改:
autoconfig petstore.war –o petstore-configured.war
一般不需要特别指定charset,除非AutoConfig自动识别系统编码出错,导致显示乱码。运行AutoConfig独立可执行程序
autoconfig ... -c GBK
如果auto-config.xml描述文件中已定义了该”Property name“,而antx.properties文件中未指定相应”Property name“值,
则执行autoconfig时会提示如下图所示要求更新antx.properties配置文件内容。选择使用默认值或是手动更新指定值,使用默认值的话逐项选择Next后再选Yes保存即可。
假如发现模板中某个placeholder,并未在auto-config.xml
中定义,就会出现以下错误:
摘自http://webx.taobao.org/docs/autoconfig.html
AutoConfig工具使用的更多相关文章
- maven 插件之 AutoConfig 工具使用笔记
AutoConfig 是一款 maven 插件,主要用于 Maven 项目打包使用.在我们的工作中,会将自己写的代码打成 jar 包或者 war 包发布到各种环境上.一般地,不用的环境所使用的数据库. ...
- AutoConfig工具使用指南
转载:http://blog.csdn.net/fighterandknight/article/details/70245905 13.1. 需求分析 13.1.1. 解决方案 13.2. Auto ...
- Qt4.8.5在ARM9上的移植
Qt4.8.5在ARM9开发板上的移植 以前移植过qtopia-embedded-2.2.0,俗称Qt/E,在早期的Qt框架中是使用X11桌面服务器系统,无法应用于嵌入式平台,为此产生了qtopia, ...
- Oracle Applications DBA 基础(一)
1.引子 2014年9月13日 20:33 <oracle Applications DBA 基础>介绍Oracle Applications R12的系统架构, 数据库后台及应用系统的基 ...
- java自动化配置工具 - autoconfig 简介
对于java程序员来说各种各样的配置文件是司空见惯的,比如spring的bean配置,struts的action配置等等.有些配置会随着运行环境的变化而各不相同,最典型的就是jdbc驱动的配置,在开发 ...
- 【RDA】使用RDA(Remote Diagnostic Agent)工具对数据库进行健康检查
[RDA]使用RDA(Remote Diagnostic Agent)工具对数据库进行健康检查 分类: Linux RDA英文全称叫做"Oracle Remote Diagnostic Ag ...
- NetSetMan IP地址切换工具
http://www.netsetman.com/en/freeware NetSetMan NetSetMan是一个网络设置管理器,它可以很容易在6种不同的,视觉结构化的配置之间切换,包括: IP地 ...
- Autoconf/Automake工具简介
在linux下编程的时候,有时候工程项目很大,文件比较多,此时需要使用自动创建Makefile文件功能.也就是使用Autoconf/Automake工具自动生成Makefile,为编译程序带来了方便, ...
- autoconfig操作小结
1.添加maven配置在pom文件中 <profile> <id>prod</id> <properties> < ...
随机推荐
- 【转】linux下终端命令快捷键
原文网址:http://daaoao.blog.51cto.com/2329117/554177 linux下使用终端不可避免. 使用终端快捷键,当然会使你如虎添翼.记住他们吧 终端快捷键 tab=补 ...
- HTTP协议中的长连接、短连接、长轮询、短轮询
长连接.短连接,指的是TCP连接.长连接是为了复用TCP连接. 长轮询中,服务器如果检测到库存量没有变化的话,将会把当前请求挂起一段时间(这个时间也叫作超时时间,一般是几十秒).在这个时间里,服务器会 ...
- js一种继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法。
js一种继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法. function ClassA(sColor) { this.color = sColor; } ClassA ...
- mac 下 mysql 安装
1. 下载安装文件: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载后缀名为dmg的安装文件 2. 启动mysql 安装后,打开"系统偏好设置& ...
- php单例模式实现对象只被创建一次 mysql单例操作类
这是我在php面试题中遇到的一道试题,单例模式按字面来看就是某一个类只有一个实例,这样做的好处还是很大的,比如说数据库的连接,我们只需要实例化一次,不需要每次都去new了,这样极大的降低了资源的耗费. ...
- SQL Server的通用分页存储过程 未使用游标,速度更快!
经过一个下午的时间,和我一个同事(绝对是高手)的共同努力下,摸索出了以下的思路: 1.确定存储的输入参数: 1)SQL脚本,该参数接收完整的.正确的SQL检索文本,可将原应用中写好的SQL脚本直接传入 ...
- Spring的IOC原理 通俗解释
1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...
- node基于express的socket.io
前一段事件,我一个同学给他们公司用融云搭建了一套web及时通信系统,然后之前我的公司也用过环云来实现web及时通信,本人对web及时通信还是非常感兴趣的.私下读了融云和环信的开发文档,然后发现如果注册 ...
- css调用方式的方法
1.内部样式表(位于 <head> 标签内部) <html><style>.box{display:inline}p { color: rgb(255,0,0); ...
- H3C的DHCP中继配置命令
dhcp enable命令用来使能DHCP服务 dhcp relay information enable 命令用来配置DHCP中继支持Option 82功能 缺省情况下,DHCP中继不支持Optio ...