Maven DBFlute プラグインのpause問題

Windowsでpauseをどう処理するかという話があって、DBFLUTE-576 として、2週間ほど放置になってしまいましたが、ようやく DBFlute の作業に戻ってきました 🙂 というわけで、早速修正。0.9.6 からは pause_at_end という環境変数が導入されていますが、これを使っています。それ以前のバージョンにおいては、dbflute:create-client で作ると bat ファイル内の pause たちが pause_at_end 環境変数を利用する形に書き換えられます。特に問題がなければ、SAStruts archetype リリースもあるので、Maven DBFlute Plugin 0.3.0 をリリースします(現在はスナップショットバージョンが利用可能です)。

Maven DBFlute Plugin のバグ対応

いくつか修正するタスクが溜っていたのだけど、別件の作業のついでに以下を修正してみた。

  • DBFLUTE-576: batファイルのpauseを無効にするオプション追加
  • DBFLUTE-575: DBFluteクライアントのデフォルトディレクトリ名変更
  • DBFLUTE-573: build.properties対応

Maven DBFlute Plugin 0.3.0-SNAPSHOT でこれが入ってます。残念ながら、時間切れで Windows 環境では十分にテストできてないです…(ごめんなさい、何かあればお知らせください)。0.2.0 でバッチファイルで pause されるようになっていたと思いますが、0.3.0-SNAPSHOT ではデフォルトで pause されないはずです。あとは、0.9.5.5 で利用できるようになっていると思います。

Maven DBFlute Plugin 0.2.0 リリース

DBFlute のサイトの方はそのうち更新されると思いますが、リリースしました(ついでに SAStruts+DBFlute のサイトも更新)。主な変更点は、generate-crud ゴールを強化しました。generate-crud で吐き出される SAStruts のクラスたちは Bs~クラスとその継承クラスで構成されていますが(DBFluteではかれるクラスと同じ感じのイメージ)、Bs~クラスのフォームクラスのアノテーションはテーブル情報から設定されていますが、これを tablemeta.properties にパラメータとかを定義しておけばカスタマイズできる感じです(これはこれでドキュメント化していかないと…)。Fess では利用していて、テーブルを作ったら generate-crud で「一覧・更新・削除」の SAStrus のクラスを吐いて、必要なカスタマイズを Bs~クラスの継承の方に記述する感じです。これで結構な手間を省けています。という感じで、久々のリリースでした(Maven DBFlute PluginもJIRAで更新を管理した方が良い気が…)。

久々にMaven DBFlute Pluginをいじる

Fess の作業も一段楽したこともあり、ここいらで一度、DBFlute の作業に戻ってみる。Fess では Maven DBFlute Plugin の generate-crud で SAStruts の Action や jsp を生成していることもあり、その辺をメンテしておかないと影響があったりもするので。っで、久々に generate-crud をいじろうと思ったら、どうやってその辺のコードを生成していたか、ほとんど記憶にない…。というわけで、模索しながら作業…。そういえば、サイトの情報も古くなっているのでそこらも直そう。

バッチファイルからの出力が多い場合止まる

https://www.seasar.org/issues/browse/DBFLUTE-536 で対応したのだけど、ProcessBuilder にがんがん改行&フラッシュとか返しちゃよくないみたい。今まで、実行しているバッチ(jdbc.batとか)から返ってくる各行で \n を返していたのだけど、行数が多いと flush ができない感じだった。というわけで、各行で送るのはやめて、ユーザーが入力したものをそのままバッチに渡るように変更してみた。これで問題自体は直ったけど、replace-schema でバッチに y をうまく送ることができず(シェルのreadから-pの文字列がこない…bash のソースも見たのだけど、strerrに渡してくれているから取れる気がするのだけど取れん。これ以上調べるのは重すぎるからやめておく…)。そんなわけで、replace-schema は環境変数で処理してくれるみたいだから、それを使ってうまく動くようにしておいた。