2015-11-04 60 views
0

我的任务是将一个旧的ant构建脚本重写为SBT。碰巧,我们的套件由3个模块组成:多模块Scala Play 2.3 conf位置

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

下面我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目录吗?

回答

1

在情况下,帮助,我们大约有激活剂(SBT)activatorWrapper包装脚本:

#!/bin/bash 

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

然后就可以开始您的应用程序:

$ ./activatorWrapper 
0

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

+0

这是不是真的,因为一个选项我们正在使用一个需要一些初始化的库(我们在Global对象中做的)。当我们运行sbt测试时,这个命令行参数被忽略,因此Global对象不会初始化库。 – irundaia

+0

你如何设置房产?你可以将'build.sbt'加入如下'javaOptions + =“-Dconfig.file =/opt/conf/prod.conf”}“ – moem

相关问题