Scala 部署静态文件以便Spray为其服务的方法有哪些?

Scala 部署静态文件以便Spray为其服务的方法有哪些?,scala,sbt,spray,Scala,Sbt,Spray,我有一个html页面,我想在喷雾服务器服务它 我熟悉 如何创建可以部署到Spray的归档文件(类似于Tomcat的.war文件,可以部署到webapps目录) 如何使用SBT将文件从一个目录复制到另一个目录(就像我们有ant构建工具的复制任务一样) 参考“将从JAR文件提供服务。在本例中,客户端是一个已打包在JAR存档中的目录。顺便说一句,它在开发模式下工作,而不打包JAR。” 我的项目结构是 src/main/resources/<files to include in main jar

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

我熟悉

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

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

  • 参考“将从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>
    
    src/main/resources/
    src/main/scala/
    src/main/java/
    src/main/test/resources/
    src/main/scala/
    src/main/java/
    
    因此,我需要保存名为“client”的目录。我需要保存html引用的.html文件和js文件的位置


    如果我在SBT交互模式下发出一个包命令,它将给我jar。如何从build.sbt或build.scala运行jar,正如您所提到的,Spray可以提供静态内容。例如:

    val myRoute =
      get {
        compressResponse()(getFromResourceDirectory("client")) ~
        path("") {
          getFromResource("client/index.html")
        }
      }
    
    将从JAR文件提供服务。在本例中,
    client
    是一个打包在JAR归档中的目录。顺便说一句,它在开发模式下工作,没有打包JAR

    运行基于Spray的应用程序有两种方法,一种是使用嵌入式Spray can服务器(JAR文件),另一种是容器(WAR文件)

    如果您使用Tomcat或其他一些web容器,那么您可以使用其中一个SBT插件创建一个常规WAR文件。例如,您可以打包WAR文件

    如果你想在Spray can服务器上运行你的web应用,你可以使用现成的模板:。顺便说一句,Spray在那里提供了基于Jetty和Spray-can的模板


    您可以始终使用其他SBT插件,并创建一个自定义构建,将所有内容打包到WAR或JAR文件中。关于Spray can,需要了解的一点是,它基本上是一个常规应用程序,有一个主类,它启动一个服务,该服务在某个端口(8080)上侦听,同时还有一个提供请求的actor系统,因此,您不需要任何web服务器或容器来运行它。

    查看这个完整的项目,该项目包可以为应用程序提供一个示例:。特别是:以及