blancoValueObject セットアップと実行用Groovyスクリプト
プロジェクトで blancoValueObject というコード自動生成のフレームワークを使用することとなった。
セットアップ手順と実行を用意にするためのGroovyスクリプトを作成した。
前提
- 以下の実行環境が必要
- Bash実行可能
- Ant実行可能
セットアップ
以下のコマンドを実行(ここではsvnリポジトリのコードを~/projects/blancoValueObjectにチェックアウト)
#!/usr/bin/env bash
svn checkout \
http://svn.sourceforge.jp/svnroot/blancofw/blancoValueObject/trunk \
~/projects/blancoValueObject
cd ~/projects/blancoValueObject
ant
cp lib/*.jar ~/.groovy/lib/
cp lib.ant/*.jar ~/.groovy/lib/
実行用Groovyスクリプト
以下のスクリプトをどこか環境変数 PATH
の通った場所に配置。
実行する際には
$ blancovalueobject.groovy <エクセル配置ディレクトリ>
または
$ blancovalueobject.groovy <エクセル配置ディレクトリ> <文字コード>
で実行すると、OSごとの一時フォルダのtargetディレクトリ内にBeanのコードが生成される。
エクセルのBean定義書テンプレートはmeta/templateディレクトリ下にあるようなのでこれを適当に記述して <エクセル配置ディレクトリ>
に突っ込んで実行。
blancovalueobject.groovy
#!/usr/bin/env groovy
def ant = new AntBuilder()
ant.taskdef(
name: "blancovalueobject"
, classname: "blanco.valueobject.task.BlancoValueObjectTask"
)
def TMP = System.properties['java.io.tmpdir']
def targetdir = new File("${TMP}/blancovalueobject/target")
if (!targetdir.exists())
ant.mkdir(dir: targetdir)
def tmpdir = new File("${TMP}/blancovalueobject/tmp")
if (!tmpdir.exists())
ant.mkdir(dir: tmpdir)
ant.blancovalueobject(
metadir: args.size() > 0 ? args[0] : "./meta",
encoding: args.size() > 1 ? args[1] : System.properties['file.encoding'],
targetdir: targetdir,
tmpdir: tmpdir,
)
こちらのフレームワーク、ちょっと苦手。エクセルからBeanを生成することで、必ずドキュメントが残るというものだが、エクセルに情報を記述するのが面倒です。コード読めない人はそもそもBean情報を定義されているエクセル読まないだろうし。Groovyなら、フィールド記述とjavadocで20行程度で収まるんだろうなぁ。javadoc生成したらドキュメント二重になるし。
2010/01/25 追記
こちらのFWの説明を聞いたら、あえてべた処理のソースコードを生成することでデバッグ実行時などを容易にし、未熟なJava開発者でも開発可能にしたとのこと。DIとかからむとどこでエラーが発生したのか見にくくなるからだそうです。
ディスカッション
コメント一覧
まだ、コメントがありません