Scaffolding プラグイン 

Giter8 は scaffolding 用の sbt プラグインも提供している。

scaffold プラグインの使用 

以下を project/scaffold.sbt に書く:

addSbtPlugin("org.foundweekends.giter8" % "sbt-giter8-scaffold" % "0.12.0")

これで sbt シェルから g8Scaffold コマンドを使えるようになる。 タブ補完を使って使用可能なテンプレートを発見できる。

> g8Scaffold <TAB>
controller   global       model

テンプレート同様に scaffold 処理に必要なフィールドは逐次プロンプトされる:

> g8Scaffold controller
className [Application]:

scaffold の作り方 

g8 ランタイムは、GitHub プロジェクトがあるとき、src/main/scaffolds 以下に scaffold を探しに行く。 src/main/scaffolds内の各ディレクトリは別々の scaffold で、そのディレクトリ名に応じて sbt シェルからアクセスできる。通常のテンプレート同様に、scaffold のディレクトリ内には default.properties を置いてフィールド値を定義することができる。ここでも name は特殊なフィールド名で、 もし name フィールドがあれば scaffold は name に基いたディレクトリ内に生成され、 その下に scaffold のソースディレクトリを複製する形でサブディレクトリ構造が形成される。

テンプレートとして使用された scaffold は <project_root>/.g8 に保存される。

$ ls sample/.g8
total 0
drwxr-xr-x   5 jtournay  staff   170B Aug  6 03:21 .
drwxr-xr-x  11 jtournay  staff   374B Aug  6 05:29 ..
drwxr-xr-x   4 jtournay  staff   136B Aug  6 03:21 controller
drwxr-xr-x   4 jtournay  staff   136B Aug  6 03:21 global
drwxr-xr-x   4 jtournay  staff   136B Aug  6 03:21 model

これを利用して、任意の sbt プロジェクトがあるとき .g8 ディレクトリを作ることで独自の scaffold を作ることも可能だ。