xsbt-scalate-precompile-pluginの作者であるKeithIrwinのおかげで、問題の解決策が得られました。
私のJade/Scalateファイルはwebapp/WEB-INF/templateおよびwebapp/WEB-INF / scalate/layoutsディレクトリにあります。
xsbt-web-pluginおよびxsbt-scalate-precompile-pluginsbtプラグインを使用しています。
- xsbt-web-pluginはpackage-warコマンドを提供します。
- xsbt-scalate-precompile-pluginは私のJadeファイルをプリコンパイルします。
私のplugins.sbtファイル。
resolvers += "Web plugin repo" at "http://siasia.github.com/maven2"
addSbtPlugin("com.github.siasia" %% "xsbt-web-plugin" % "0.1.2")
resolvers += "zentrope" at "http://zentrope.com/maven"
addSbtPlugin("com.zentrope" %% "xsbt-scalate-precompile-plugin" % "1.7")
私のbuild.scalaファイル。
import WebPlugin._
import Keys._
import com.zentrope.ScalatePlugin._
...
// WebApp Settings
val webAppSettings = Seq(
jettyPort := 8083,
jettyContext := "/MyWebApp"
)
// Scalate Compile Settings
val scalateCompileSettings = scalateTemplateSettings ++ Seq(
scalateTemplateDirectories in Compile <<= (scalateTemplateDirectories in Compile, baseDirectory) {
(dirs, basedir) => dirs ++ Seq(new File(basedir, "/src/main/webapp/WEB-INF/template"),
new File(basedir, "/src/main/webapp/WEB-INF/scalate/layouts"))
}
)
...
lazy val MyWebApp =
Project("MyWebApp", file("MyWebApp"), settings = shared ++ webAppSettings ++ scalateCompileSettings ++ Seq(
resolvers ++= Seq(sonatypeNexusReleases, scalaToolsNexus, novusRels, scalaToolsSnapshots),
libraryDependencies ++= Seq(
scalatra,
scalate,
...
)
))
キースのプラグインの1.7バージョンでは、私が本当に必要としていた特定のテンプレートディレクトリを設定できます。唯一の注意点は、package-warを呼び出す直前にクリーンアップを実行する必要があることです。そうしないと、コンパイルされたJadeファイルが削除されます。