【问题标题】:Scalate sbt 0.11.0 plugin helpScalate sbt 0.11.0 插件帮助
【发布时间】:2011-12-14 17:25:35
【问题描述】:

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

我一直在用 "com.github.siasia" %% "xsbt-web-plugin" % "0.1.2" 打包网络应用程序。

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

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

用预编译的 Scalate 文件打包战争的最佳方式是什么?

【问题讨论】:

    标签: scala pug scalate scalatra


    【解决方案1】:

    感谢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 文件会被删除。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2010-12-22
        • 1970-01-01
        • 2010-12-07
        • 2021-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多