Webx框架:AutoConfig

AutoConfig

AutoConfig是一個小工具,用於解決不同機器之間配置不同的問題。有時候有些配置,比如數據庫地址、緩存地址等,這些配置與環境有關。每次在不同的環境中都需要重新修改配置,比較麻煩。解決這個問題有兩種方法,一種是通過maven中的filter工具,另外一種是使用autoconfig。maven-filter工具的缺點是,當項目編譯打包之後,無法再修改配置文件。而autoconfig可以通過一個腳本指令,直接修改打包過的配置文件,不需要重新編譯,這樣節省了不少時間。

接下來介紹用法,包括開發階段和部署階段。開發階段首先在META-INF文件夾中增加autoconf/auto-config.xml文件。下面是該文件的示例內容:

<?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>

下面是每個標籤的解釋:

property標籤。有name/defaultValue/description/required屬性。顧名思義,這裏就不贅述了。

validator標籤。用於驗證參數是否填寫正確。支持的驗證器有以下幾種。

<validator name="boolean" />
<validator name="choice" choice="trace, debug, info, warn, error" />
<validator name="email" />
<validator name="fileExist" [file="WEB-INF/web.xml"/> 文件必須存在
<validator name="hostExist" /> 合法IP
<validator name="keyword" /> 只能由字母數字下劃線組成
<validator name="number" />
<validator name="regexp" regexp="..."/>

generate標籤。表示替換該文件中的placeholder。有template/destfile/charset/outputCharset參數。

在maven中加入autoconfig

<build>
    <plugins>
        <plugin>
            <groupId>com.alibaba.citrus.tool</groupId>
            <artifactId>autoconfig-maven-plugin</artifactId>
            <version>1.2</version>
            <configuration>
                <!-- 要進行 AutoConfig 的目標文件,默認爲${project.artifact.file}。
                <dest>${project.artifact.file}</dest>
                -->
                <!-- 配置後,是否展開目標文件,默認爲false,不展開。
                <exploding>true</exploding>
                -->
                <!-- 展開到指定目錄,默認爲 ${project.build.directory}/ ${project.build.finalName}。
                <explodedDirectory>
                ${project.build.directory}/${project.build.finalName}
                </explodedDirectory>
                -->
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>autoconfig</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

部署階段。首先從網上下載autoconfig工具:

安裝到系統目錄,比如/usr/local/bin中。

配置應用包。下面的命令將會修改test.war中的配置文件,將placeholder直接替換成屬性值。

autoconfig test.war

或者

autoconfig test.war test-configured.war

如果希望有的placeholder不被替換,可以使用${D\{myprop}}

共享參數。有些應用使用的相同的參數,就可以通過這個選項,一次配置,多方使用。

autoconfig -s share1.properties,share2.properties test.war

共享參數還可以引用網絡上的配置文件,可以有多套默認配置。

其他命令。

autoconfig -i on # 交互模式 
autoconfig -i off
autoconfig -u file.xml # 配置file.xml文件 
autoconfig -c GBK # 設置編碼 

AutoExpand

用於嵌套展開一個應用包。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章