有什么方法可以部署静态文件,以便Spray可以为它们服务?

时间:2014-07-23 07:19:38

标签: scala sbt spray

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

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

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

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

  3. 指的是“将从JAR文件提供服务。在这种情况下,客户端是一个打包在JAR存档中的目录.BTW这在dev模式下工作,也没有包装JAR。”

    < / LI>

    我的项目结构就像

    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文件和js文件我的html引用。

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

    运行该jar

1 个答案:

答案 0 :(得分:1)

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

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

将从JAR文件提供。在这种情况下,client是已打包在JAR存档中的目录。顺便说一句,这在开发模式下工作,也没有包装JAR。

运行基于Spray的应用程序 2种方式,可以使用嵌入式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)和一个提供请求的actor系统,所以你不需要任何web服务器或容器来运行它。

相关问题