【问题标题】:How do I specify a config file with play 2.4 and activator如何使用 play 2.4 和激活器指定配置文件
【发布时间】:2015-10-20 17:27:15
【问题描述】:

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

我想运行我的测试 2 次,每次运行时使用不同的配置文件。

如何指定替代配置文件,或覆盖配置设置?

我目前使用命令“./activator test”运行测试

【问题讨论】:

    标签: scala playframework configuration typesafe-activator playframework-2.4


    【解决方案1】:

    您可以为不同的环境/目的创建不同的配置文件。例如,我有三个配置文件,分别用于本地测试、alpha 部署和生产部署,如本项目https://github.com/luongbalinh/play-mongo

    您可以指定运行的配置如下:

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

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

    【讨论】:

    • 这似乎不起作用,无论是在运行模式还是测试模式下。我通过从 application.conf 中省略一个必需的组件来进行测试。我还尝试了“-Dconfig.file=/abs/path/to.conf”。并使用“export ACTIVATOR_OPTS=-Dconfig.resource=test.conf”。
    • 你能在你的 application.conf 中显示省略的组件吗?
    • //datastore.type = "memory" 如果未指定,应用程序会在我的软件内部崩溃。
    • -Dconfig.resource 选项被传递给类型安全激活器,它不会将它传递给子进程。您可以在 build.sbt 中添加一行来修复此问题以进行测试:“javaOptions in Test +=”-Dconfig.file=conf/test.conf” 但这不允许测试中有多个配置文件,只有一个。这个无效的错误有一个很好的描述:github.com/playframework/playframework/issues/2852
    【解决方案2】:

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

    activator "run -Dconfig.resource=application.conf"
    

    其中 application.conf 是所需的配置。没有引号,它对我不起作用。这使用的配置参数与您进入生产模式时使用的配置参数相同,如下所述: https://www.playframework.com/documentation/2.5.x/ProductionConfiguration#Specifying-an-alternate-configuration-file

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

    需要使用引号,因为您不想将 -D 发送到激活器,而是发送到运行命令。使用引号,激活器的 JVM 没有 -D 参数,但它解释“run -Dconfig.file=application.conf”并相应地设置 config.file 属性,也在激活器的 JVM 中。

    这里已经讨论过了:Activator : Play Framework 2.3.x : run vs. start

    【讨论】:

      【解决方案3】:

      由于以上所有内容都部分不正确,这是我上周末的辛苦知识。

      1. 使用include "application.conf" include "application"(Akka 使用)
      2. 必须将配置命名为 .conf,否则 Play 会默默地丢弃它们
      3. 您可能需要-Dconfig.file=<file>.conf,因此您不依赖于类路径
      4. 确保您提供完整的文件路径(例如/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,这样开发人员就不会意外签入。

      【讨论】:

        【解决方案4】:

        以下命令适用于 Play 2.5

         $ activator -Dconfig.resource=jenkins.conf run
        

        https://www.playframework.com/documentation/2.5.x/ProductionConfiguration

        【讨论】:

          猜你喜欢
          • 2018-07-03
          • 2019-11-02
          • 1970-01-01
          • 2016-07-02
          • 2011-11-12
          • 2014-10-29
          • 1970-01-01
          • 2011-07-17
          • 2016-05-20
          相关资源
          最近更新 更多