5 가지 환경이 있습니다.
- local (my development machine)
- dev
- qc
- uat
- live
- staging
각 환경마다 다른 응용 프로그램 속성을 사용하고 싶습니다. 따라서 데이터 원본에 대해 서로 다른 URL을 갖는 다음과 같은 속성 파일이 있습니다.
- application.properties (containing common properties)
- application-local.properties
- application-dev.properties
- application-qc.properties
- application-uat.properties
- application-live.properties
IntelliJ를 사용하고 로컬 컴퓨터의 Gradle 플러그인에서 bootRun을 사용하여 앱을 실행하고 있습니다. Tomcat을 실행하는 다른 모든 환경에서 동일한 응용 프로그램 war 파일을 배포하는 데 사용할 것입니다.
나는 추가를 시도했다 :
–spring.profiles.active = local
스크립트 매개 변수에서 구성을 실행합니다.
나는 추가를 시도했다
-Dspring.profiles.active = local
VM 옵션에서 구성을 실행합니다.
둘 다 작동하지 않습니다. 시작시 INFO 메시지가 계속 표시됩니다. 활성 프로파일 세트 없음, 기본 프로파일로 돌아 가기 : 기본값
Windows 명령 줄에서 다음을 사용하여 앱을 실행하면
gradle bootRun
하지만 먼저 환경 변수를 설정했습니다
set SPRING_PROFILES_ACTIVE=local
그런 다음 모든 것이 작동합니다.
그래서 제 질문은 IntelliJ에서 bootRun을 실행할 때 어떻게 로컬 스프링 부트 프로파일을 활성화합니까?
답변
-Dspring.profiles.active=test
VM 옵션에 추가 한 다음 해당 구성을 다시 실행했습니다. 완벽하게 작동했습니다.
이 설정은
- 고르는
Run | Edit Configurations...
Configuration
탭으로 이동- 확장
Environment
공개 섹션을VM options
답변
답변
답변
Spring Boot는 VM 옵션이 발전함에 따라 읽는 방법을 변경 한 것으로 보입니다. Intellij에서 응용 프로그램을 시작하고 일부 프로필을 활성화하려고 할 때 시도하는 방법이 있습니다.
1. VM 옵션 변경
“실행”에서 “구성 편집”을 열고 “VM 옵션”에서 다음을 추가하십시오. -Dspring.profiles.active=local
실제로으로 내 하나 개의 프로젝트와 함께 작동 Spring Boot v2.0.3.RELEASE
하고 Spring v5.0.7.RELEASE
있지만 또 다른 프로젝트와 Spring Boot v2.1.1.RELEASE
와 Spring v5.1.3.RELEASE
.
또한 Maven 또는 JAR로 실행할 때 사람들은 다음과 같이 언급했습니다.
mvn spring-boot:run -Drun.profiles=dev
또는
java -jar -Dspring.profiles.active=dev XXX.jar
(여기 : Spring Boot 프로파일 사용 방법 참조 )
2. JVM 인수 전달
JVM 옵션을 지정하면 Spring이 애플리케이션 프로세스 시작 방법을 변경한다고 언급합니다. 다른 프로세스를 분기하고 수신 된 인수를 전달하지 않으므로 작동하지 않습니다. 인수를 전달하는 유일한 방법은 다음과 같습니다.
mvn spring-boot:run -Dspring-boot.run.jvmArguments="..."
다시, 이것은 Maven을위한 것입니다.
https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html
3. 설정 (적용) env var
두 번째 프로젝트에서 나에게 도움이되는 것은 위의 답변에서 언급 한 것처럼 “환경 설정 편집”- “환경 변수”와 같이 환경 변수를 설정하는 것입니다.
SPRING_PROFILES_ACTIVE=local
답변
나는 build.gradle에 다음을 추가했다.
bootRun {
environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "local"
}
test {
environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "test"
}
이제 IntelliJ에서 bootRun을 실행할 때 기본적으로 “local”프로파일이 사용됩니다.
다른 환경에서는 단순히 Tomcat에서 ‘SPRING_PROFILES_ACTIVE’환경 변수를 설정합니다.
https://github.com/spring-projects/spring-boot/pull/592 에서 찾은 의견에서 이것을 얻었습니다.
답변
명령 행 매개 변수를 응용 프로그램 기본 메소드로 전달하지 않았을 수 있습니다. 몇 주 전에 같은 실수를했습니다.
public static final void main(String... args) {
SpringApplication.run(Application.class, args);
}
답변
Intellij Community Edition을 사용합니다. “실행 / 디버그 구성”> 러너 탭> 환경 변수> “…”단추를 클릭하십시오. 추가 : SPRING_PROFILES_ACTIVE = 로컬