REST服务使用喷雾罐

时间:2015-11-06 19:18:17

标签: sbt spray

我有一个应用程序,我使用喷雾罐建设。这是一个sbt项目,我有标准的sbt项目结构。我有一个application.dev.conf,application.test.conf和application.prod.conf。我现在想通过传递application.xxx.conf文件作为参数来启动我的喷雾罐服务器。我过去广泛使用过Play框架,我可以控制或者更确切地说将配置文件传递给play run命令。我现在怎么能用Spray做同样的事情?有什么建议吗?

我有以下内容:

val cfg = context.system.settings.config

这是在Spray中我的actor中获取application.conf文件的正确方法吗?

我试过这样做:

sbt "project simple-http-server" run -Dconfig.resource=production.conf

似乎运行后的任何内容都会被默默忽略。如何针对不同的配置发出run命令?

1 个答案:

答案 0 :(得分:2)

您可以使用Typesafe's Config Library

只需定义依赖项:

libraryDependencies += "com.typesafe" % "config" % "1.3.0"

在您的应用中,您可以使用它来获取配置:

val conf = ConfigFactory.load()

默认情况下,它会在类路径中搜索名为application.{conf,json,properties}的文件,但您可以在运行应用时使用-Dconfig.file覆盖此文件。

如果您希望在SBT中使用此功能,则需要启用forking。 SBT通常不会分支新的JVM进程,因此您需要启用它并在build.sbt中指定所需的JVM选项:

// fork a new JVM for 'run' and 'test:run'
fork in run := true

// set config file to production.conf
javaOptions in run += "-Dconfig.file=production.conf"

或者在命令行中动态设置它:

sbt '; set javaOptions += "-Dconfig.file=production.conf"; run'