【问题标题】:What are the approaches to deploy static files so Spray can serve them?部署静态文件的方法是什么,以便 Spray 可以为它们提供服务?
【发布时间】:2014-09-14 06:17:41
【问题描述】:

我有一个 html 页面,我想在喷雾服务器中提供它。

我熟悉https://github.com/spray/spray/wiki/File-and-Resource-Directives

  1. 如何创建可以部署到 Spray 的存档(类似于 Tomcat 的 .war 文件可以部署到 webapps 目录)?

  2. 如何使用 SBT 将文件从一个目录复制到另一个目录(就像我们有 ant 构建工具的复制任务)

  3. 指的是“将从 JAR 文件提供服务。在这种情况下,客户端是已打包在 JAR 存档中的目录。顺便说一句,这在开发模式下也可以在不打包 JAR 的情况下工作。”

我的项目结构是这样的

src/main/resources/<files to include in main jar here>
src/main/scala/<main Scala sources>
src/main/java/<main Java sources>
src/main/test/resources/<files to include in test jar here>
src/main/scala/<test Scala sources>
src/main/java/<test Java sources>

所以我需要保留名为“client”的目录。我需要保存我的 .html 文件和我的 html 引用的 js 文件。

如果我在 SBT 交互模式下发出打包命令,它会给我 jar。如何从 build.sbt 或 build.scala 运行该 jar

【问题讨论】:

    标签: scala sbt spray


    【解决方案1】:

    如您所述,Spray 可以提供静态内容。例如:

    val myRoute =
      get {
        compressResponse()(getFromResourceDirectory("client")) ~
        path("") {
          getFromResource("client/index.html")
        }
      }
    

    将从 JAR 文件中提供服务。在本例中,client 是一个已打包在 JAR 存档中的目录。顺便说一句,这在开发模式下也可以在不打包 JAR 的情况下工作。

    2种方式来运行基于Spray的应用程序,使用嵌入式Spray-can服务器(JAR文件)或容器( WAR 文件)。

    如果您使用 Tomcat 或其他一些 Web 容器,则可以使用其中一个 SBT 插件创建常规 WAR 文件。比如https://github.com/earldouglas/xsbt-web-plugin可以打包WAR文件。

    如果您想在 Spray-can 服务器上运行您的 Web 应用程序,您可以使用现成的模板:https://github.com/spray/spray-template。 BTW Spray 提供了基于 Jetty 和 Spray-can 的模板。

    您始终可以使用其他 SBT 插件并创建自定义构建,将所有内容打包到 WAR 或 JAR 文件中。关于 Spray-can 要了解的一件事是,它基本上是一个常规应用程序,它有一个主类,它启动一个侦听某个端口(8080)的服务以及一个服务请求的参与者系统,所以你不需要任何网络服务器或容器来运行它。

    猜你喜欢
    • 2012-07-27
    • 2020-09-15
    • 1970-01-01
    • 2018-11-27
    • 2016-08-08
    • 2019-10-06
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多