2015年8月1日土曜日

Antでビルドする時にサーバー環境によってweb.xmlの内容を書き換えたいのでcopyタスクのFilterChainsを使う

Antでビルドする時にサーバー環境によってweb.xmlの内容や他の設定ファイル類の内容を書き換えたいので調べてみたら、copyタスクにFilterChainsというタスクで指定した文字列を書き換える事ができると分かったのでやってみた。

やり方の流れ:


  1. 書き換えたいファイルのテンプレートとなるファイルを作る(web_template.xml)
  2. テンプレートで書き換わる文字列をプロパティとして設定したファイルを作る(server1.xml)
  3. ビルドファイルにテンプレートと変数を元に生成するファイル(web.xml)を作るルールを書く(build.xml)
1.web_template.xml

....
<context-param>
    <param-name>someparameter</param-name>
    <param-value>@somevariable@</param-value>
</context-param>
....

※@~@の@は分かり易くつけてるだけです。

2.server1.xml

<project>
    <property name="server.host" value="abc.com" />
</project>

3.build.xml

<target name="rewriteXmlFile" >

    <copy file="/template/web_template.xml"  tofile="/WEB-INF/web.xml" overwrite="true">
        <filterchain>
            <tokenfilter>
                <replacestring from="@somevariable@" to="${server.host}"/>        
            </tokenfilter>
        </filterchain>
    </copy>

</target>



http://stackoverflow.com/questions/5217501/ant-copy-filterset
http://ant.apache.org/manual/Tasks/copy.html
http://ant.apache.org/manual/Types/filterchain.html#replacestring


0 件のコメント:

コメントを投稿