1

Scalate Jade と sbt 0.11.0 を使用して Scalatra Web アプリを開発しています

"com.github.siasia" %% "xsbt-web-plugin" % "0.1.2" で Web アプリをパッケージ化しています。

また、Jade ファイルをコンパイルするために "com.zentrope" %% "xsbt-scalate-precompile-plugin" % "1.6" を試してみました。

残念ながら、xsbt-web-plugin を使用して戦争をパッケージ化すると、コンパイル済みの Scalate ファイルからターゲット ディレクトリがクリアされます。

プリコンパイルされた Scalate ファイルを使用して戦争をパッケージ化する最良の方法は何ですか?

4

2 に答える 2

1

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ファイルが削除されます。

于 2012-01-10T10:54:38.390 に答える
0

私はここであなたを理解しているかどうか確信が持てません。ソースのものはすべて にある必要がありsrcます。には何も入れてはいけませんtarget。リソースは自然に に入りsrc/main/resourcesます。それで、これらの「プリコンパイル済み」ファイルは自動的に生成されるものですか、それともリソースディレクトリにあるはずですか?

于 2011-12-14T18:38:05.070 に答える