giter8でScalaのプロジェクトテンプレートを作る方法です。
リポジトリ名
GitHub上でホスティングする場合は、<username>/<template-name>
または<username>/<template-name>.g8
の形式でリポジトリを作成します。接尾辞の.g8
は以前は必須でしたが今は無くてもかまいません。例えば、suin/play-scala
またはsuin/play-scala.g8
という名前でリポジトリを作っておくと、ユーザはg8 suin/play-scala
でプロジェクトを生成することができます。
基本的なファイル構成
src/main/g8
の中身がテンプレートになる。
github.com/username/template-name.g8
└── src
└── main
└── g8
├── build.sbt
├── default.properties ... g8の変数定義など
├── project
...
giter8の設定ファイル
default.properties
はgiter8の設定と、プロジェクト生成時に置き換える変数名とそのデフォルト値を設定します。よくあるパターンは次のような設定値ですが、好きなだけ変数を用意してかまいません。
name=Play Scala
organization=com.example
version=0.1.0-SNAPSHOT
verbatim=activator *.js *.ts *.jar *.xml *.png
verbatim
はテンプレート処理しないファイル名を指定します。ファイルに$
が書いてあると、giter8は置換しようと試みるので、jquery.min.jsなど$
が書かれているファイルはここで除外するようにしておきます。もし次のようなエラーが出る場合は、$
を含んでいるファイルが処理されようとして失敗しているので、除外すべきファイルを確認する必要があります。(現在のg8ではどのファイルでエラーになったのか教えてくれないので、出ないので当てずっぽうで探す他ありません…)
problem parsing template 'anonymous'
line 23:1: expecting '$', found '<EOF>'
ローカルでの開発方法
giter8は実はローカルのファイルからプロジェクトを生成することができます。file://
でパスを指定すると、そこにあるテンプレートでプロジェクト生成を実行してくれます。これを活用したほうがGitHubにpushしたりする手間がないので、手軽にテンプレートを開発できます。
g8 file:///path/to/template.g8
置換のしくみ
置換のしくみは、設定ファイルdefault.properties
で宣言した変数名を単純に置き換えるというものになっています。ソースファイル中の$
で囲まれた文字が置換されます。また、ファイル名に含まれる$変数名$
も置換されます。