読者です 読者をやめる 読者になる 読者になる

ゲンゾウ用ポストイット

Java、Groovy、Linux関連の備忘録

blancoValueObject セットアップと実行用Groovyスクリプト

blanco

プロジェクトで blancoValueObject というコード自動生成のフレームワークを使用しないといけないためにセットアップ手順と実行用のGroovyスクリプトを作成。

前提

bash実行可能
ant実行可能

セットアップ

以下のコマンドを実行(ここではsvnリポジトリのコードを~/projects/blancoValueObjectにチェックアウト)

#!/bin/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"
)

final 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とかからむとどこでエラーが発生したのか見にくくなるからだそうです。

広告を非表示にする