Обнаружение воспроизведения 2.2.x до начала приложения с использованием Java
Я хочу указать мое приложение для воспроизведения в конкретный файл конфигурации приложения на основе среды, в которой он запущен. Их три, и они соответствуют стандартным состояниям воспроизведения:
- application.dev.conf
- application.test.conf
- application.prod.conf
Сотрудник поделился методом для этого, который требует установки переменной среды ОС.
Я хотел бы исключить необходимость установки переменной ОС.
Мое предпочтение - использовать все, что использует Play при запуске, чтобы узнать, в каком режиме он находится.
Например, если вы выполните play run
из командной строки, то часть вывода будет "[info] play - Application started (Dev)"
Я хочу использовать эту информацию в моей Global.java, где я переопределяю onLoadConfig следующим образом:
public Configuration onLoadConfig(Configuration baseConfiguration, File f, ClassLoader loader) {
String playEnv=<some static method to get mode>;
Config additionalConfig = ConfigFactory.parseFile(new File(f,"conf/application."+playEnv+".conf"));
Config baseConfig = baseConfiguration.getWrappedConfiguration().underlying();
return new Configuration(baseConfig.withFallback(additionalConfig));
}
Все, что я нахожу, это то, как это сделать после, приложение было запущено, то есть с помощью isDev(), isTest(), isProd().
Есть ли статический метод, предоставляющий режим, в то время как я переопределяю onLoadConfig в Global.java?
Ответы
Ответ 1
Я думаю, что play run
является dev, play start
является prod.
EDIT: Если вы хотите посмотреть, что такое текущий режим, он прошел через play.api.Play.current:
Play.current.mode match {
case Play.Mode.Dev => "dev"
case Play.Mode.Prod => "prod"
}
Ответ 2
Проблема, похоже, была устранена в последней версии Play (3.0.0). В Global
добавлен еще один метод onLoadConfig
, который имеет параметр mode: {Dev,Prod,Test}
.
public Configuration onLoadConfig(Configuration config, File path, ClassLoader classloader, Mode mode) {
return onLoadConfig(config, path, classloader); // default implementation
}
Ответ 3
Play позволяет указывать альтернативный файл конфигурации с командной строкой, поэтому нет необходимости устанавливать переменные ОС.
Конечно, вы можете создать файл bash script/bat, чтобы не писать его каждый раз