AutoConfig工具使用


下載安裝Auto工具包:

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

名稱 描述
兩種用法
  • 既可獨立使用(支持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描述文件示例:

<?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的驗證規則

目前,有以下幾種驗證器:

可用的property驗證規則如下

驗證規則 說明
<validator name="boolean" />

Property值必須為truefalse

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

Property值必須為choice所定義的值之一。

<validator name="email" />

Property值必須為合法的email格式。

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

Property值必須為某個存在的文件或目錄。

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

<validator name="hostExist" />

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

<validator name="keyword" />

Property值必須為字母、數字、下划線的組合。

<validator name="number" />

Property值必須為數字的組合。

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

Property值必須符合regexp所指的正則表達式。

其中,mode為匹配的方法:

  • 完全匹配exact

  • 前綴匹配prefix

  • 包含contain

如未指定mode,默認mode為contain。

<validator name="url"
           [checkHostExist="false"]
           [protocols="http, https"]
           [endsWithSlash="true"] />

Property值必須是合法URL。

假如指定了checkHostExist=true,那么還會檢查域名或IP的正確性;

假如指定了protocols,那么URL的協議必須為其中之一;

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

 
生成配置文件的指令

描述文件中,每個<generate>標簽指定了一個包含placeholders的配置文件模板,具體格式為:

生成配置文件的指令:

<generate
    template="..."
    [destfile="..."]
    [charset="..."]
    [outputCharset="..."]
>

下面是參數的說明:

生成配置文件的指令參數:

參數名 說明
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看作非法:

${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:

  1. 當前目錄 ./antx.properties

  2. 當前用戶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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM