Giter8 は scaffolding 用の sbt プラグインも提供している。
以下を project/scaffold.sbt
に書く:
addSbtPlugin("org.foundweekends.giter8" % "sbt-giter8-scaffold" % "0.16.2")
これで sbt シェルから g8Scaffold
コマンドを使えるようになる。
タブ補完を使って使用可能なテンプレートを発見できる。
> g8Scaffold <TAB>
controller global model
テンプレート同様に scaffold 処理に必要なフィールドは逐次プロンプトされる:
> g8Scaffold controller
className [Application]:
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 を作ることも可能だ。