2008年8月7日木曜日

ant-velocity

どもー。

静的コンテンツだけのページを作るとき、どーしてもヘッダフッタをコピペで何度も書きたくないので調べたところ、Apache Jakarta プロジェクトから次の 2つのプロジェクトを見つけました。

・Apache Velocity Anakia
・Apache Velocity Texen

どちらも、Velocity というテンプレートエンジンを使って Ant のカスタムタスクを提供しています。それぞれすばらしいツールなんですが、ちょっと気に入りません。

Apache Velocity Anakia ... XML をソースとして、vsl を記述する必要がある。
Apache Velocity Texen ... コントロールファイルを記述する必要がある。

Ant と Velocity 使うならもっとシンプルにできそうなのに。。そう考えて作っちゃいました!

ant-velocity-1.0.0

もっともシンプルな Ant ビルドファイルはこんな感じ。カスタムタスクを定義して、todir、fileset を指定するだけ。tmpl ディレクトリ以下の html ファイルを Velocity テンプレートとして評価し、htdocs に出力します。
<taskdef name="velocity" classname="org.jarx.ant.VelocityTask"
classpathref="classpath" />
<velocity todir="htdocs" encoding="UTF-8">
<fileset dir="tmpl" includes="**/*.html">
</velocity>

変数を指定したい場合はこう。
<velocity todir="htdocs" encoding="UTF-8">
<fileset dir="tmpl" includes="**/*.html">
<parameter name="baseurl" value="http://jarx.org/" />
</velocity>

変数をプロパティファイルに記述したい場合はこう。
<velocity todir="htdocs" encoding="UTF-8"
propertyFile="resource.properties">
<fileset dir="tmpl" includes="**/*.html">
</velocity>

ボーダーテンプレートを使いたい場合はこう。
<velocity todir="htdocs" encoding="UTF-8"
borderTmplFile="tmpl/border-template.html">
<fileset dir="tmpl" includes="**/*.html">
</velocity>

ボーダーテンプレートはこんな感じ。#parse(${path}) の部分に fileset で指定したテンプレートの内容が入ります。
<html>
<head><title>border template example</title></head>
<body>#parse(${path})</body>
</html>

1 件のコメント:

Unknown さんのコメント...

Good job!
ありがたく利用させていただきます。