Справка по плагину Scalate SBT 0.11.0
Я занимаюсь разработкой веб-приложения Scalatra с помощью Scalate Jade и использую sbt 0.11.0
Я упаковывал веб-приложение с помощью "com.github.siasia" %% "xsbt-web-plugin" % "0.1.2".
Я также экспериментировал с "com.zentrope" %% "xsbt-scalate-precompile-plugin" % "1.6" для компиляции файлов Jade.
К сожалению, если я использую xsbt-web-plugin для упаковки своей войны, он очищает целевой каталог от любых предварительно скомпилированных файлов Scalate.
Каков наилучший способ упаковать войну с предварительно скомпилированными файлами Scalate?
2 ответа
Благодаря Китаю Ирвину, автору https://github.com/zentrope/xsbt-scalate-precompile-plugin, у меня теперь есть решение моей проблемы.
Мои файлы Jade/Scalate находятся в каталогах webapp/WEB-INF/template и webapp/WEB-INF/scalate/layouts.
Я использую плагины xsbt-web-plugin и xsbt-scalate-precompile-plugin sbt.
- 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,
...
)
))
Версия плагина Keiths для версии 1.7 позволяет настраивать определенные каталоги шаблонов, что мне действительно нужно. Единственное предостережение в том, что я должен выполнить очистку прямо перед вызовом package-war или перед удалением моих скомпилированных файлов Jade.
Я не уверен, что понимаю вас здесь. Все, что является источником, должно быть в src
, Никогда не надо ничего вкладывать в target
, Ресурсы, естественно, пошли бы в src/main/resources
, Итак, являются ли эти "предварительно скомпилированные" файлы чем-то, что генерируется автоматически, или они должны были находиться в каталоге ресурсов?