2015-02-11 51 views
4

我有什麼,我認爲是一個常見用例開發和部署一個播放2.3.6應用:如何使用sbt在Play應用程序中指定配置文件?

  • 在發展中,我跑sbt run和應用程序使用application.conf預期。
  • 在生產中我想用sbt start並指定配置文件,production.conf,其駐留在相同的目錄中dev的配置文件(其是<project root>/conf/

繼「指定替代配置下的說明文件」關於official docs page標題,就像這樣:

$ sbt start -Dconfig.file=/full/path/to/project/conf/production.conf 

應用程序啓動沒有錯誤,但我可以檢查Web應用程序,看到它加載我application.conf發展的價值觀,不是我的在production.conf發現產值。

我也嘗試了建議的做法:

$ sbt start -Dconfig.resource=production.conf 

而且服務器無法啓動,出現錯誤:

[error] com.typesafe.config.ConfigException$IO: production.conf: java.io.IOException: resource not found on classpath: production.conf 

有任何人知道如何正確地做到這一點?

回答

10

經過幾個小時的浪費,我想通了。使用引號如下傳遞參數正確:

$ sbt "start -Dconfig.resource=production.conf" 

另外,如果你需要指定端口號,確保談到配置選項,否則會被忽略:

$ sbt "start -Dconfig.resource=production.conf 9001" 
+0

另外...我剛剛意識到,如果您指定了端口號,它必須在_configure選項後出現,否則該選項將被忽略。 – mjswensen 2015-05-01 13:07:05

+0

我想用默認配置文件(application.conf)來玩,但我仍然有同樣的問題。 conf目錄中有application.conf文件。但是當我執行'sbt start'命令時會拋出同樣的錯誤 – vanz 2015-05-06 21:03:49

+0

這對我有效:https://stackoverflow.com/questions/48000310/play-framework-overriding-application-conf-values-based-on-environment/48012753#48012753 – tgk 2017-12-28 18:45:55

相關問題