在使用Java启动应用程序之前检测Play 2.2.x模式

Jer*_*dek 12 java playframework playframework-2.2

我想根据运行的环境将我的播放应用程序指向特定的应用程序配置文件.有三个,它们对应于标准播放状态:

  • application.dev.conf
  • application.test.conf
  • application.prod.conf

一个同事共享了一个执行此操作的方法,该方法需要设置OS环境变量.

我想消除设置OS变量的需要.我的偏好是使用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));
}
Run Code Online (Sandbox Code Playgroud)

我发现的一切都是在应用程序启动如何使用isDev(),isTest(),isProd().

当我覆盖Global.java中的onLoadConfig时,是否存在提供模式的静态方法?

Wil*_*ent 3

我认为play run是开发,play start是产品。

编辑:如果您想查看当前模式是什么,它是通过 play.api.Play.current 传入的:

Play.current.mode match {
  case Play.Mode.Dev => "dev"
  case Play.Mode.Prod => "prod"
}
Run Code Online (Sandbox Code Playgroud)