Настройки игровой графики в зависимости от окружения
Я использую playframework 2.1-RC2. Прежде всего, я видел все похожие questions, поэтому я выполнил общую инструкцию по разделению файла application.conf на среду. Поэтому у меня есть application.test.conf, и я запускаю тесты следующим образом:
play -Dconfig.file=./conf/application.test.conf "test"
Я пробовал разные комбинации, например
play -Dconfig.file=./conf/application.test.conf ~test
или
play -Dconfig.file=conf/application.test.conf ~test
По-прежнему не повезло, оно просто не выбрано, по умолчанию используется один (application.conf).
С другой стороны, если я делаю
play -Dconfig.file=./conf/application.dev.conf "run"
тогда приложение выбирает правильную конфигурацию.
Итак, как я могу указать тестовый файл конфигурации?
Ответы
Ответ 1
Я нашел наиболее надежный способ указать это в кросс-платформенной совместимости, это включить его непосредственно в Build.scala:
val main = play.Project(appName, appVersion, appDependencies).settings(
javaOptions in Test += "-Dconfig.file=conf/test.conf",
...
)
Бонус: настроить один раз и забыть; -)
Ответ 2
Другой подход заключается в переопределении метода в GlobalSettings/Global с именем onLoadConfig, который позволяет вам контролировать, где ваше приложение будет искать вашу конфигурацию.
Итак, в одном из наших приложений у меня есть эта настройка ниже для моей папки conf/.
conf/application.conf --> configurations common for all environment
conf/dev/application.conf --> configurations for development environment
conf/test/application.conf --> configurations for testing environment
conf/prod/application.conf --> configurations for production environment
Таким образом, вы можете реализовать наследование, такое как настройка для конфигурации, у вас есть общий и 3 других для определенного режима среды.
Код внутри вашего метода onLoadConfig должен просто загружать основную конфигурацию и устанавливать правильную резервную конфигурацию, специфичную для вашей среды, а затем возвращать экземпляр конфигурации, как показано ниже:
**return new Configuration(baseConfig.withFallback(envConfig));**
Попробуйте проверить этот пост блога для полного фрагмента кода.
Надеюсь, это поможет.