mike-neckのブログ

Java or Groovy or Swift or Golang

Rule Based Model ConfigurationのManagedインターフェースを生成するgradle pluginを作った。

なるべく、わからないようにリリースしたつもりだったのですが、さすがGradleの日本の第一人者、綿引さんにすぐに見つかってしまいました。

Gradle - Plugin: org.mikeneck.rule-based-model-generation


Rule Based Model Configurationのインターフェースの制約

これ、結構ドキュメントがしっかりしていないので、インターフェースを書くのに、難しいところがあったりします。

それを簡単に解決するプラグインです。

まあ、webアプリを作ってる人にはほとんど関係無いです。

あくまでgradle pluginを作ってる人に使ってもらうようなプラグインです。

インターフェースの制約にはこのようなものがあります。

  • ModelSet<T>のタイプTには@Managedなモデルインターフェースが設定されていないとコンパイルエラー
  • 他の@Managedなモデルを参照するフィールドに対してはセッターを設けると、データの定義ができない
  • ModelSet<T>enumを指定するとこれまたコンパイルエラー
  • というか、ここまでのデータタイプに対してsettergetterのナニが必要だかわかりづらい

このあたり、僕が幾つか落とし穴を踏み抜いた結果、作ったプラグインです。

書き方などは、唯一のドキュメントであるREADME.mdを読んで下さい。

github.com

プラグインの導入

このプラグインは次のRequirementが設定されています。

  • Gradle2.5以上
  • Java 8以上

この条件を満たした上で、次のスクリプトbuild.gradleに記述します。

plugins {
    id 'org.mikeneck.rule-based-model-generation' version '0.1'
}

モデルの設定

ドキュメント読んで下さい(手抜き)

出来上がるもの

generateModelsタスクによって、指定したディレクトリーのパッケージに指定した型をもったインターフェースが作成されます。


今後

インターフェースを作ったのはいいけど、テスト時にこれの実装クラスをいちいち作るのが面倒なので、これのPOJOを作るタスクを現在作成中です。


今後その2

これを用いてgradleTestKitをサポートするクラスを自動生成するプラグインを作成しています。

それはこちらのレポジトリーにあります。

github.com

ごらんになればわかりますが、なにもコミットしていません。(ローカルではコミットしまくっている)

おそらく、2日後にプラグインポータルに載せられると思っています。


おわり。

最近Gradle芸人になりつつある…