Настройки игровой графики в зависимости от окружения

Я использую 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));**

Попробуйте проверить этот пост блога для полного фрагмента кода.

Надеюсь, это поможет.