2013-10-24 5 views
12

실행중인 응용 프로그램이 실행중인 환경을 기반으로 특정 응용 프로그램 구성 파일을 가리 키길 원합니다. 세 가지가 있으며 표준 재생 상태에 해당합니다.Java를 사용하여 응용 프로그램을 시작하기 전에 2.2.x 모드를 실행하십시오.

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

공동 작업자는 OS의 envir 설정을 요구하는 이러한 작업을 수행하기위한 방법을 공유 변수.

OS 변수를 설정하지 않아도됩니다. 내 취향이 재생 시작시 사용하는 무엇이든 사용이가에 어떤 모드 아는 것입니다. 예를 들어

, 명령 줄에서 play run을 실행할 경우, 출력 부분은 내가 이것을 사용하려면 "[info] play - Application started (Dev)"

입니다 내가 지금처럼 onLoadConfig 오버라이드 (override) 내 Global.java 정보 : 내가 할 방법을 찾을

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()를 사용하여, 즉 시작된 후이 .

Global.java에서 onLoadConfig를 재정의하는 동안 모드를 제공하는 정적 메서드가 있습니까?

+0

스칼라에는 자바에서 매개 변수'mode'가 있습니다. 따라서 티켓을 열었습니다. https://github.com/playframework/playframework/issues/2279 –

+0

감사합니다. Antonio. 나는 그 문제를 추적 할 것이다. –

답변

3

생각해 보면 play run은 dev입니다.

편집 :

Play.current.mode match { 
    case Play.Mode.Dev => "dev" 
    case Play.Mode.Prod => "prod" 
} 
+0

질문은 응용 프로그램이 내부에서'dev' 또는'prod'에 있는지 여부를 결정하는 것이지, 응용 프로그램을'dev' 또는'prod' 모드로 실행하는 방법이 아닙니다. –

+0

편집과 관련하여 구성을로드 할 때 실행중인 응용 프로그램이 없으므로 모드가 현재로 설정되어 있지 않습니다. –

0

재생이 설정 때문에 필요가 없습니다 명령 줄 specifying alternative configuration file 할 수 있습니다 : 당신은 현재 모드가이 play.api.Play.current을 통해 전달 된 것, 뭐가 있는지 찾고 있다면 OS 변수.

당신은 물론 그것을 문제는 최신 플레이 (3.0.0)에서 해결 될 것처럼 보였다

+1

별로 도움이되지 않습니다. 내 응용 프로그램 내에서 런타임에 재생 모드를 가져올 수 있어야합니다. –

3

마다 작성 피하기 위해 일부 bash는 스크립트/박쥐 파일을 만들 수 있습니다. 마녀에 추가 된 onLoadConfig 방법이 있습니다. mode: {Dev,Prod,Test} 매개 변수가 있습니다.

public Configuration onLoadConfig(Configuration config, File path, ClassLoader classloader, Mode mode) { 
    return onLoadConfig(config, path, classloader); // default implementation 
} 
+0

Play 3.0.0? 이미 미래인가? – nietaki

관련 문제