ANT_HOME を一時的に上書き

つい最近わかったことがありました。

A. Ant実行スクリプトは ANT_HOME の Ant を優先して実行
B. 1.7.x 想定の環境で 1.8.x だと NoClassDefError
 -> org/apache/xerces/dom/DocumentImpl
 -> JDBCタスクのみ発生

DBFluteは Ant を内部で保持しています。
DBFlute内部の Ant 実行スクリプトを実行します。
なので、PC上で ANT_HOME を設定していない環境であれば、
特に問題なくDBFlute内部の Ant が実行されます。
ですが、PC上で ANT_HOME を設定されている場合は、
その ANT_HOME が参照する Ant が実行されます。

これが "A" の話で、これだけならほとんどの場合問題は
ないのですが(Antの仕様的には当然のことではるし)、
これに加えて "B" の話が絡んで例外となるケースがあります。
実は "B" はよくわかっていません。
1.7.x を想定して作られたDBFluteの処理が 1.8.x と
マッチしていないのか、1.7.x の実行スクリプトで実行するの
がよくないのか...などなど。そこまで突っ込んでいません。
追記:以前も同じ話がありました (Xercesの有無)
http://d.hatena.ne.jp/jflute/20080907#c1221050635

ですが、とりあえず DBFlute で、実行直前に一時的に
ANT_HOME を上書きして必ず DBFlute 内部の Ant が
利用されるようにしました。PC側で ANT_HOME をどう設定
しようと影響されることはありません。

ということで、JDBCタスクでこの例外、
NoClassDefError
org/apache/xerces/dom/DocumentImpl
が発生して「なんだろう?」と直面された方は、

DBFlute-0.9.7.9-RC1

をご利用下さい。

この件は、こちらの方のブログでの
フィードバックによって判明しました。
(ありがとうございました)

// メモがわり
http://d.hatena.ne.jp/sakube1/20110108

@DBFlute, Java, DBFlute.NET, C#