Scalate sbt 0.11.0 插件帮助

发布于 2024-12-21 16:58:00 字数 337 浏览 1 评论 0原文

我正在使用 Scalate Jade 开发一个 Scalatra Web 应用程序,并使用 sbt 0.11.0

我一直用“com.github.siasia”%%“xsbt-web-plugin”%“0.1.2”打包该 Web 应用程序。

我还尝试使用 "com.zentrope" %% "xsbt-scalate-precompile-plugin" % "1.6" 来编译 Jade 文件。

不幸的是,如果我使用 xsbt-web-plugin 打包我的 war,它会清除任何预编译的 Scalate 文件中的目标目录。

使用预编译的 Scalate 文件打包 war 的最佳方法是什么?

I'm developing a Scalatra web app with Scalate Jade and using sbt 0.11.0

I've been packaging the web app with "com.github.siasia" %% "xsbt-web-plugin" % "0.1.2".

I've also been experimenting with "com.zentrope" %% "xsbt-scalate-precompile-plugin" % "1.6" to compile the Jade files.

Unfortunately if I use the xsbt-web-plugin to package my war it clears the target directory from any precompiled Scalate files.

What is the best way to package a war with precompiled Scalate files?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

╰つ倒转 2024-12-28 16:58:00

感谢 xsbt-scalate-precompile-plugin 的作者 Keith Irwin,我现在我的问题有了解决方案。

我的 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 文件将被删除。

Thanks to Keith Irwin, the author of xsbt-scalate-precompile-plugin, I now have a solution to my problem.

My Jade/Scalate files are in webapp/WEB-INF/template and webapp/WEB-INF/scalate/layouts directories.

I'm using the xsbt-web-plugin and xsbt-scalate-precompile-plugin sbt plugins.

  • xsbt-web-plugin provides me with the package-war command.
  • xsbt-scalate-precompile-plugin pre-compiles my Jade files.

In my plugins.sbt file.

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")

In my build.scala file.

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,
        ...
      )
    ))

The 1.7 version of Keiths' plugin allows for the setting of specific template directories which is what I really needed. The only caveat is that I must do a clean right before I call package-war or my compiled Jade files get removed.

江城子 2024-12-28 16:58:00

我不确定我是否理解你的意思。任何源代码都应该位于 src 中。永远不应该在 target 中放入任何内容。资源自然会进入src/main/resources。那么,这些“预编译”文件是自动生成的,还是应该位于资源目​​录中?

I'm not sure I understand you here. Anything that's source should be in src. One should never put anything in target. Resources would naturally go into src/main/resources. So, are these "precompiled" files something that is being automatically generated, or should they have been in the resources directory?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文