在Play Framework中,我注意到可以分离Dev或Prod模式中使用的配置属性。
最好的使用示例是baseUrl:
# Url-resolving in Jobs
# ~~~~~~
# When rendering templates with reverse-url-resoling (@@{..}) in Jobs (which do not have an inbound Http.Request),
# ie if sending a HtmlMail, Play need to know which url your users use when accessing your app.
# %test.application.baseUrl=http://localhost:9000/
%dev.application.baseUrl=http://127.0.0.1:9000
%prod.application.baseUrl=http://www.example.com
但我无法让它适用于其他财产:
%dev.application.staticUrl=/public
%prod.application.staticUrl=http://static.example.com
调用Play.configuration.getProperty("application.staticUrl")
,甚至是Play.configuration.getProperty("%dev.application.staticUrl")
(进行测试)都没有:/
我该如何做到这一点?
答案 0 :(得分:5)
在开发模式下运行时,您不需要在行前加上开发。
我在使用2个实例开发app和prod模式时以开发模式运行我的应用程序。 我的application.conf示例:
application.mode=dev
%inst1.application.mode=prod
%inst2.application.mode=prod
mail.smtp=mock
%inst1.mail.smtp=MAILSERVER1
%inst2.mail.smtp=MAILSERVER1
使用播放运行myapp 运行应用将使用不带前缀的属性。 在prod模式下,我使用播放开始 - %inst1 和播放开始 - %inst2 运行2个实例。
这将创建2个使用自己的属性运行的应用程序实例,如果未指定,则创建默认属性。
使用getProperty时,请勿使用前缀即。 Play.configuration.getProperty(“mail.smtp”)将以开发模式返回模拟,或者以prod模式返回MAILSERVER1。
在你的情况下你有两个配置(不要误认为运行模式!),dev和prod。应用程序运行模式由application.mode属性定义。