有没有办法在playframework的application.conf中替换环境变量?

时间:2011-05-20 14:53:29

标签: playframework

有没有办法在剧中使用环境变量! application.conf文件?像这样:

%prod.db.url=${env.DATABASE_JDBC_URL}
%prod.db.driver=org.postgresql.Driver
%prod.jpa.ddl=validate

我不想在我的application.conf中对URL进行硬编码,因为它包含开发人员无权访问的凭据。

3 个答案:

答案 0 :(得分:12)

使用以下来源解决$ {}内的所有变量:

  • $ {application.path}等效于Play.applicationPath.getAbsolutePath()
  • $ {play.path}等效于Play.frameworkPath.getAbsolutePath()
  • 任何其他来自System.getProperty。

因此,您可以在启动Play时将这些参数添加为 -Dkey = name 参数!使用特定于您的环境的秘密凭据。

答案 1 :(得分:8)

${ENV_VARIABLE_KEY}确实解决了环境中设置的所有变量。你不必指定" env。"前缀,除非它是你的密钥的一部分。

答案 2 :(得分:3)

我有同样的问题。我的解决方案:

  • 让application.conf仅包含本地开发的属性,并将其存储在开发团队的VCS(SVN,Git,...)中
  • 在application.conf文件中添加一行:“@ include.prod = prod.conf”
  • 文件prod.conf仅包含%prod。* properties
  • 直接在prod服务器上创建文件prod.conf(或将其存储在与您的应用程序不同的VCS中,只允许人们读/写它)

它适用于我。

它只是在应用程序启动时为开发团队添加了一条消息:

ex:20 mai 2011 21:09:16 play.Logger警告注意:遗失包括:@ include.prod

真的不是问题。只需告知您的开发团队此消息不是问题,并且不要删除application.conf中的“@ include.prod”行

希望有所帮助