下载安装Auto工具包:

  1. tar zxvf autoconfig-1.0.9.tgz
    tar zxvf autoexpand-1.0.9.tgz
    cp autoconfig /usr/local/bin
    cp autoexpand /usr/local/bin
    ------------------------------------------------------------------------------------------------------
  1. 引:<filter>${user.home}/antx.properties</filter>
    用指定的properties文件(${user.home}/antx.properties)中的值,替换上述文件行中的placeholders(占位符)
  2.  
  3. AutoConfig不需要提取源码,也不需要重新build,即可改变目标文件中所有配置文件中placeholders的值,并对placeholder及其值进行检查。

AutoConfig Features:

名称 描述
两种用法
  • 既可独立使用(支持Windows和Unix-like平台)。

  • 也可以作为maven插件来使用。

对目标文件而不是源文件进行配置
  • 可对同一个目标文件反复配置。

  • 配置时不依赖于项目源文件。

  • 支持嵌套包文件,例如:ear包含war,war又包含jar。

  • 高性能,特别对于嵌套的包文件。

验证和编辑properties
  • 自动发现保存于war包、jar包、ear包中的properties定义。

  • 验证properties的正确性。

  • 交互式编辑properties。

  • 当配置文件中出现未定义的placeholders时,提示报错。

/META-INF/autoconf目录用来存放AutoConfig的描述文件,以及可选的模板文件。

auto-config.xml是用来指导AutoConfig行为的关键描述文件

创建war和jar包的AutoConfig机制,关键在于创建war或jar目标包中的/META-INF/autoconf/auto-config.xml描述文件

-------------------------------------------------------------------------------------------------------------

AutoConfig描述文件示例:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <config>
  3. <group>
  4.  
  5. <property name="petstore.work"
  6. description="应用程序的工作目录" />

  1. <property name="petstore.loggingRoot"
  2. defaultValue="${petstore.work}/logs"
  3. description="日志文件目录" />

  1. <property name="petstore.upload"
  2. defaultValue="${petstore.work}/upload"
  3. description="上传文件的目录" />

  1. <property name="petstore.loggingLevel"
  2. defaultValue="warn"
  3. description="日志文件级别">

  1. <validator name="choice"
  2. choice="trace, debug, info, warn, error" />

  1. </property>
  2. </group>
  3. <script>
  4. <generate template="WEB-INF/web.xml" />

  1. <generate template="WEB-INF/common/resources.xml" />
  2. </script>
  3. </config>

   

定义properties

定义property的验证规则(可选)

生成配置文件的指令。

  1.  

定义一个property的完整格式如下

例如下定义一个property

  1. <property
  2. name="..."
  3. [defaultValue="..."]
  4. [description="..."]
  5. [required="true|false"]
  6. >
  7. <validator name="..." />
  8. <validator name="..." />
  9. ...
  10. </property>

可用的property参数包括:

定义property时可用的参数如下:

参数名 说明
name Property名称。
defaultValue(可选) 默认值。默认值中可包含对其它property的引用,如${petstore.work}/logs
description(可选) 对字段的描述,这个描述会显示给deployer,这对他理解该property非常重要。
required(可选) 是否“必填”,默认为true。如果deployer未提供必填项的值,就会报错。
 
 
定义property的验证规则

目前,有以下几种验证器:

可用的property验证规则如下

验证规则 说明
  1. <validator name="boolean" />

Property值必须为truefalse

  1. <validator name="choice"
  2. choice="trace, debug, info, warn, error" />

Property值必须为choice所定义的值之一。

  1. <validator name="email" />

Property值必须为合法的email格式。

  1. <validator name="fileExist"
  2. [file="WEB-INF/web.xml"] />

Property值必须为某个存在的文件或目录。

如果指定了file,那就意味着property值所指的目录下,必须存在file所指的文件或子目录。

  1. <validator name="hostExist" />

Property值必须为合法的IP地址,或者可以解析得到的域名。

  1. <validator name="keyword" />

Property值必须为字母、数字、下划线的组合。

  1. <validator name="number" />

Property值必须为数字的组合。

  1. <validator name="regexp"
  2. regexp="..."
  3. [mode="exact|prefix|contain"] />

Property值必须符合regexp所指的正则表达式。

其中,mode为匹配的方法:

  • 完全匹配exact

  • 前缀匹配prefix

  • 包含contain

如未指定mode,默认mode为contain。

  1. <validator name="url"
  2. [checkHostExist="false"]
  3. [protocols="http, https"]
  4. [endsWithSlash="true"] />

Property值必须是合法URL。

假如指定了checkHostExist=true,那么还会检查域名或IP的正确性;

假如指定了protocols,那么URL的协议必须为其中之一;

假如指定了endsWithSlash=true,那么URL必须以/结尾。

生成配置文件的指令

描述文件中,每个<generate>标签指定了一个包含placeholders的配置文件模板,具体格式为:

生成配置文件的指令:

  1. <generate
  2. template="..."
  3. [destfile="..."]
  4. [charset="..."]
  5. [outputCharset="..."]
  6. >

下面是参数的说明:

生成配置文件的指令参数:

参数名 说明
template

需要配置的模板名。

模板名为相对路径,相对于当前jar/war/ear包的根目录。

destfile(可选)

目标文件。

如不指定,表示目标文件和模板文件名相同,但是默认生成路径为包下的根目录,即Base URL目录

charset(可选)

模板的字符集编码。

XML文件不需要指定charset,因为AutoConfig可以自动取得XML文件的字符集编码;

对其它文件必须指定charset。

outputCharset(可选)

目标文件的输出字符集编码。

如不指定,表示和模板charset相同。

-------------------------------------------------------------------------------------------------------------
 
建立模板文件:
在auto-config.xml中定义了模板的位置后,把模板文件放在指定的位置。

AutoConfig的寻找模板的逻辑是:

  • 如果在auto-config.xml所在的目录下发现模板文件,就使用它;

  • 否则在包的根目录中查找模板文件;如果两处均未找到,则报错。

书写模板是很简单的事,你只要:

  • 把需要配置的点替换成placeholder:“${property.name}”。当然,你得确保property.name被定义在auto-config.xml中。

  • 假如模板中包含不希望被替换的运行时的placeholder“${...}”,需要更改成“${D}{...}” 。

此外,AutoConfig模板其实是由Velocity模板引擎来渲染的。因此,所有的placeholder必须能够通过velocity的语法。

使用不符合velocity语法的placeholders

例如,下面的placeholder被velocity看作非法:

  1. ${my.property.2}

解决的办法是,改写成如下样式:

  1. ${my_property_2}
    ----------------------------------------------------------------------------------------------------------

    Autoconfig工具的使用

最简单的AutoConfig命令

  1. autoconfig petstore.war 无论petstore.war是一个zip包还是目录,AutoConfig都会正确地生成其中的配置文件

AutoConfig会生成一个日志文件,就在auto-config.xml所在的目录下,名字为:auto-config.xml.log

默认情况下,AutoConfig会按下列顺序查找user properties:

  1. 当前目录 ./antx.properties

  2. 当前用户HOME目录/antx.properties

你可以指定一个自己的properties文件,用下面的命令:

   autoconfig ... –u my.props

你可以指定另一个输出文件或目录,这样,原来的文件或目录就不会被修改:

   autoconfig petstore.war –o petstore-configured.war

  1. 一般不需要特别指定charset,除非AutoConfig自动识别系统编码出错,导致显示乱码。运行AutoConfig独立可执行程序
    autoconfig ... -c GBK

    如果auto-config.xml描述文件中已定义了该”Property name“,而antx.properties文件中未指定相应”Property name“值,
    则执行autoconfig时会提示如下图所示要求更新antx.properties配置文件内容。选择使用默认值或是手动更新指定值,使用默认值的话逐项选择Next后再选Yes保存即可。

  2. 假如发现模板中某个placeholder,并未在auto-config.xml中定义,就会出现以下错误:
  3.  

  4. 摘自http://webx.taobao.org/docs/autoconfig.html 

AutoConfig工具使用的更多相关文章

  1. maven 插件之 AutoConfig 工具使用笔记

    AutoConfig 是一款 maven 插件,主要用于 Maven 项目打包使用.在我们的工作中,会将自己写的代码打成 jar 包或者 war 包发布到各种环境上.一般地,不用的环境所使用的数据库. ...

  2. AutoConfig工具使用指南

    转载:http://blog.csdn.net/fighterandknight/article/details/70245905 13.1. 需求分析 13.1.1. 解决方案 13.2. Auto ...

  3. Qt4.8.5在ARM9上的移植

    Qt4.8.5在ARM9开发板上的移植 以前移植过qtopia-embedded-2.2.0,俗称Qt/E,在早期的Qt框架中是使用X11桌面服务器系统,无法应用于嵌入式平台,为此产生了qtopia, ...

  4. Oracle Applications DBA 基础(一)

    1.引子 2014年9月13日 20:33 <oracle Applications DBA 基础>介绍Oracle Applications R12的系统架构, 数据库后台及应用系统的基 ...

  5. java自动化配置工具 - autoconfig 简介

    对于java程序员来说各种各样的配置文件是司空见惯的,比如spring的bean配置,struts的action配置等等.有些配置会随着运行环境的变化而各不相同,最典型的就是jdbc驱动的配置,在开发 ...

  6. 【RDA】使用RDA(Remote Diagnostic Agent)工具对数据库进行健康检查

    [RDA]使用RDA(Remote Diagnostic Agent)工具对数据库进行健康检查 分类: Linux RDA英文全称叫做"Oracle Remote Diagnostic Ag ...

  7. NetSetMan IP地址切换工具

    http://www.netsetman.com/en/freeware NetSetMan NetSetMan是一个网络设置管理器,它可以很容易在6种不同的,视觉结构化的配置之间切换,包括: IP地 ...

  8. Autoconf/Automake工具简介

    在linux下编程的时候,有时候工程项目很大,文件比较多,此时需要使用自动创建Makefile文件功能.也就是使用Autoconf/Automake工具自动生成Makefile,为编译程序带来了方便, ...

  9. autoconfig操作小结

    1.添加maven配置在pom文件中 <profile>     <id>prod</id>     <properties>         < ...

随机推荐

  1. Spring Cloud 入门 之 Hystrix 篇(四)

    原文地址:Spring Cloud 入门 之 Hystrix 篇(四) 博客地址:http://www.extlight.com 一.前言 在微服务应用中,服务存在一定的依赖关系,如果某个目标服务调用 ...

  2. Django 实现CRM 问卷调查功能组件

    目录结构: 母版 {% load staticfiles %} <!DOCTYPE html> <html lang="zh-CN"> <head&g ...

  3. java 解析office文件 大全

    原文地址:http://ansjsun.iteye.com/blog/791142 读取OFFICE文件纯文本 package org.css.resource.businesssoft.search ...

  4. linux 信号处理 五 (示例)

    [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核对于信号的处理流程包括信号的触发/注册/执 ...

  5. gcc gdb调试 (二)

    GDB的命令概貌——————— 启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示: /home/hchen> g ...

  6. sql表设计

    数据库实际上是系统逻辑在磁盘上的固化,是信息河流的蓄水池. 数据库的表应有如下类型 1)类表.配置表.作为业务逻辑基本的名字,状态的定义,作为构建逻辑世界的最基础框架,解释框架的框架. 特点,数据不会 ...

  7. 如何手动关闭tomcat服务,不在Eclipse中的server里按那个红色按钮关

    首先,找到Tomcat服务器的安装目录bin目录下的shutdown.bat.然后拖动到命令行进行操作,将Tomcat服务器关闭~ 将shutdown.bat 文件拖至命令行操作当中,执行该命令,即可 ...

  8. JSON: JSON 用法

    ylbtech-JSON: JSON 用法 1. JSON Object creation in JavaScript返回顶部 1. <!DOCTYPE html> <html> ...

  9. [转]IIS 允许/禁止 目录浏览

    <?xml version="1.0" encoding="utf-8"?> <configuration> <system.we ...

  10. 在chrome中安装基于REST的web服务客户端

    基于REST的Web服务客户端的使用方法 点击转到基于REST的Web服务客户端下载页面 chrome浏览器如果安装扩展程序点击chrome浏览器右上角,选择“设置在“设置”对话框里选择“扩展程序”然 ...