多模块Scala Play 2.3 conf location

时间:2015-11-04 13:51:22

标签: scala playframework configuration

我的任务是将旧的ant构建脚本重写为SBT。碰巧,我们的套件由3个模块组成:

  • Play 2.3前端网络服务器;
  • 用于从各种其他系统检索数据的后端;
  • 一个中间模块,包含一些用于数据库访问和业务逻辑的共享类。

可以找到我的Build.scala文件的摘录:

val sharedSettings = Seq(
  organization        := <organization here>,
  version             := "1.2.5",
  scalaVersion        := "2.11.1",
  libraryDependencies ++= libraries,
  unmanagedJars in Compile ++= baseDirectory.value / "lib",
  unmanagedJars in Compile ++= baseDirectory.value / "src",
  unmanagedJars in Compile ++= baseDirectory.value / "test"
)

lazy val middle = project.settings(sharedSettings: _*)
lazy val back = project.settings(sharedSettings: _*).dependsOn(middle)

lazy val front =
  project
    .enablePlugins(play.PlayScala)
    .settings(sharedSettings: _*)
    .settings(scalaSource in Compile := baseDirectory.value / "app")
    .settings(
      routesImport ++= Seq(
        "scala.language.reflectiveCalls", // Removes warnings when using multiple routes files
        "com.asml.cerberus.front.toolbox.Binders._")
    )
    .dependsOn(middle % "compile->compile;test->test")

我在./front/conf/目录中获得了我的application.conf。不幸的是,如果我现在运行sbt,它会查找./conf/application.conf文件。 (我已经通过移动conf目录对此进行了测试。)

有什么方法可以告诉SBT / Play使用前面模块的conf目录吗?

2 个答案:

答案 0 :(得分:1)

如果有帮助,我们在activator(sbt)activatorWrapper周围有一个包装器脚本:

#!/bin/bash

activator -Dconfig.file=front/conf/application.conf

然后您可以使用以下命令启动您的应用程序:

$ ./activatorWrapper

答案 1 :(得分:0)

您可以使用系统属性指定备用配置文件。有关详细信息,请参阅here