uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

Grailsでバッチ処理を実行

Webアプリ機能は使用せずに、GORMやサービスなどのGrailsのすべての機能を使いたい場合があります。たとえばデータベースにデータをバッチ的にひたすらインポートするような処理です。GORMを使いたいですね。

その目的のためにbatch-launcher-pluginというプラグインがあります。単にバッチというだけでなく、バッチスクリプトが変更されたら自動リロード、再実行など結構な機能があります。しかし惜しむらくは、このプラグインはGrails 1.2.5までの対応であり、2.2.1では実際には動きません。そういうときは以下のような修正を加えると惜しいとこまでいくのですが、結局あきらめました。

(batch-launcherをGrails 2.x対応にするために結局上手くいかなかった試行錯誤に関する500行を削除。ちきしお。)

しょうがないので、そういうときは以下の私が自作したGant script RunBatch.groovyを使うと便利です。
(ここにあった500行も削除。該当するコマンドを開発したという記事。)

既存のコマンド grails run-scriptを使います。

あんのかよ。orz
でもこれにはコマンドライン引数(args)を与えることができねーじゃねーか、わしのはできるもんね。
(追記: argsが与えられるようにPullRequestしてみた)