Scala 如何使用play 2.4和activator指定配置文件

Scala 如何使用play 2.4和activator指定配置文件,scala,playframework,configuration,typesafe-activator,playframework-2.4,Scala,Playframework,Configuration,Typesafe Activator,Playframework 2.4,我正在构建一个使用类型安全激活器的Scala Play 2.4应用程序 我希望在每次运行时使用不同的配置文件运行测试2次 如何指定备用配置文件或覆盖配置设置 我目前使用“/activator test”命令运行测试。您可以为不同的环境/目的创建不同的配置文件。例如,我有三个用于本地测试、alpha部署和生产部署的配置文件,如本项目中所示 您可以按如下方式指定要运行的配置: 激活器运行-Dconfig.resource=application.conf 其中application.conf是您要使

我正在构建一个使用类型安全激活器的Scala Play 2.4应用程序

我希望在每次运行时使用不同的配置文件运行测试2次

如何指定备用配置文件或覆盖配置设置


我目前使用“/activator test”命令运行测试。您可以为不同的环境/目的创建不同的配置文件。例如,我有三个用于本地测试、alpha部署和生产部署的配置文件,如本项目中所示

您可以按如下方式指定要运行的配置:

激活器运行-Dconfig.resource=application.conf


其中application.conf是您要使用的配置。

您可以为不同的环境创建不同的配置文件。要指定将其与activator run一起使用的配置,请使用以下命令:

activator "run -Dconfig.resource=application.conf"
其中application.conf是所需的配置。如果没有这些引语,对我来说是行不通的。这与进入生产模式时使用的配置参数相同,如下所述:

需要知道的重要一点是,config.resource会尝试在conf/文件夹中定位配置,因此也无需指定。对于不在资源之间的完整路径,请使用config.file。进一步阅读也在上面的链接中

需要使用引号,因为您不希望将-D发送到activator,而是发送到run命令。使用引号,激活器的JVM不会得到-D参数,但它会解释“run-Dconfig.file=application.conf”,并相应地设置config.file属性,同样在激活器的JVM中也是如此


这里已经讨论过了:

下面的命令适用于Play 2.5

 $ activator -Dconfig.resource=jenkins.conf run

由于以上所有内容都有部分错误,以下是我上周末努力学习的知识

  • 使用
    包括“application.conf”
    而不是
    包括“application”
    (Akka这样做)
  • 配置必须命名为
    .conf
    ,否则Play将自动放弃它们
  • 您可能需要
    -Dconfig.file=.conf
    ,这样就不依赖于类路径
  • 确保提供完整的文件路径(例如,
    /opt/configs/prod.conf
  • 示例

    下面是我们运行的示例:

    #prod.conf
    include "application"
    
    akka.remote.hostname = "prod.blah.com"    
    
    # Example of passing in S3 keys
    s3.awsAccessKeyId="YOUR_KEY"
    s3.awsSecretAccessKey="YOUR_SECRET_KEY"
    
    然后像这样把它传进来:

    activator -Dconfig.file=/var/lib/jenkins/jenkins.conf test
    
    如果你喜欢SBT:

    sbt -Dconfig.file=/var/lib/jenkins/jenkins.conf test
    
    开发环境


    还要注意的是,创建一个
    developer.conf
    文件也很容易,以保留所有密码/本地端口,然后设置一个
    .gitignore
    ,这样开发人员就不会意外地将它们签入。

    无论是在运行模式还是测试模式下,这似乎都不起作用。我通过从application.conf中省略一个必需的组件来进行测试。我还尝试了“-Dconfig.file=/abs/path/to.conf”。使用“export ACTIVATOR_OPTS=-Dconfig.resource=test.conf”。是否可以在application.conf中显示省略的组件?//datastore.type=“memory”当未指定时,应用程序会崩溃,这是我的软件的内部组件。将-Dconfig.resource选项传递给类型安全激活器,而不会传递给子进程。您可以在build.sbt中添加一行代码,为测试修复此问题:“Test+=”-Dconfig.file=conf/Test.conf”,但这不允许在测试中使用多个配置文件,只允许使用一个。此无效错误的描述非常好: