概要
これまでMavenを中心に使ってきたんだけど、今のチームではGradleを採用している。
Gradle始めて使ってみてるので、試しにプラグインを作ってみた。
どんなプラグイン?
ざっくりいうとただ指定したディレクトリ配下にあるSQLファイルを実行するだけのプラグイン。
SQLファイルは構成管理に乗せるようなやつはFlywayなりで扱うと思うんだけど、構成管理に乗らないようなテストデータとかを流すやつがあったら便利じゃないかなと思ったのがきっかけ。
まぁすでにもっと便利なものがどこかにありそうだし、その程度のものならわざわざプラグインにしなくてもいいと思うけど、練習の意味もあるし作りたいから作ったという感じ。
GradleのプラグインポータルにもPublishしてある。
Gradle - Plugin: red.sukun1899.wanko
ハマったところ
JdbcDriverの依存は利用側で設定するようにしたかったのだが、プラグイン側でClassNotFoundExceptionが発生してしまった。
結局後述のリンクを参考に、build.gradleを読み込んでロードするようにした。
def loader = Sql.classLoader project.buildscript.configurations.classpath.each { File file -> loader.addURL(file.toURI().toURL()) }
こんな感じ。 当該コードは下記。
wanko-gradle-plugin/WankoRunTask.groovy at master · su-kun1899/wanko-gradle-plugin · GitHub
参考にしたのは下記。
- Jdbc driver class cannot be loaded with gradle 2.0 (but worked with 1.12) - Old Forum - Gradle Forums
- jdbc - Executing SQL in a Gradle task? - Stack Overflow
- Gradle: cannot execute sql, driver not found - Stack Overflow
テスト
テストは下記スライドがとても参考になった。