对于我的Play 2.2 /Scala 应用程序(使用 SBT 构建),我想根据要部署的环境部署不同的配置文件(例如,将部署与特定的数据库服务器耦合)。如何为不同的部署目标创建应用程序配置文件 (conf/application.conf) 的不同变体?希望可以从基础版本生成变体?
我对.NET 的习惯是有一个基本配置文件(Web.config),它会根据正在部署的配置文件(例如生产)进行一定的转换。有人在 Play/Scala 世界中使用类似的技术吗?
对于我的Play 2.2 /Scala 应用程序(使用 SBT 构建),我想根据要部署的环境部署不同的配置文件(例如,将部署与特定的数据库服务器耦合)。如何为不同的部署目标创建应用程序配置文件 (conf/application.conf) 的不同变体?希望可以从基础版本生成变体?
我对.NET 的习惯是有一个基本配置文件(Web.config),它会根据正在部署的配置文件(例如生产)进行一定的转换。有人在 Play/Scala 世界中使用类似的技术吗?
Play 的文档中很好地介绍了替代配置文件Specifying alternative configuration file
的部分。
简而言之-在application.conf
您放置应用程序的默认配置时,您还需要为您的环境创建其他文件,即。life.conf
等dev.conf
。在这些文件中,您首先需要包含(这将读取整个默认配置),然后只application.conf
覆盖必须更改的部分 - 即。数据库凭据,它可能是:dev.conf
include "application.conf"
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:alternative-database-for-dev-testing"
db.default.user=developer
db.default.password="developerpass"
所以最后你开始你的应用程序(之后dist
)为
./start -Dconfig.resource=dev.conf
或使用 Play 控制台
play -Dconfig.resource=dev.conf run
几个提示:
application.conf
文件中,如果某些开发人员忘记包含他的dev.conf
内容,他不会损坏生产数据库,而是应该将其放入prod.conf
.dev_aknuds1.conf
等,因此您可以在 repo 中dev_biesior.conf
使用一种模式忽略它们。dev_*.conf
start_dev.sh
,run_dev.sh
这样您就不需要-Dconfig.resource=...
每次都编写