복붙노트

[SPRING] 봄 부팅시 명령 줄에서 활성 프로필 및 구성 위치 설정

SPRING

봄 부팅시 명령 줄에서 활성 프로필 및 구성 위치 설정

나는 스프링 부트 응용 프로그램을 가지고있다.

내 응용 프로그램 -> 개발, 준비 및 생산에 3 개의 프로필이 있습니다. 그래서 나는 3 개의 파일을 가지고있다.

내 application.yml은 src / main / resources 안에있다. application.yml에서 활성 프로파일을 다음과 같이 설정했습니다.

spring:
  profiles.active: development

나머지 3 개의 프로필 관련 설정 파일은 C : \ config 폴더에 있습니다.

Eclipse 용 gradle 플러그인을 사용하고 있습니다. "bootRun"을 할려고 할 때, 나는 이클립스에서 내 gradle 구성으로 명령 줄 인수를 설정하고있다.

 -Dspring.profiles.active=staging -Dspring.config.location=C:\Config

그러나 명령 줄 속성은 반영되지 않고 활성 프로필은 항상 applications.yml 파일에서 언급 한대로 개발로 설정됩니다. 또한 C : \ Config 폴더는 프로필 관련 구성 파일을 검색하지 않습니다.

나는 여기서 뭔가를 놓치고 있다고 생각한다. 나는 지난 2 일 동안 그것을 알아 내려고 노력했다. 그러나 운이 없다. 어떤 도움을 주셔서 감사합니다.

해결법

  1. ==============================

    1.명령 줄에 스프링 속성을 추가 / 무시할 수있는 두 가지 방법이 있습니다.

    명령 줄에 스프링 속성을 추가 / 무시할 수있는 두 가지 방법이 있습니다.

    -D 매개 변수는 application.jar 앞에 있어야합니다. 그렇지 않으면 인식되지 않습니다.

    java -jar -Dspring.profiles.active=prod application.jar
    

    java -jar application.jar --spring.profiles.active=prod --spring.config.location=c:\config
    
  2. ==============================

    2.나는 이것을 덧붙여 야했다 :

    나는 이것을 덧붙여 야했다 :

    bootRun {
        String activeProfile =  System.properties['spring.profiles.active']
        String confLoc = System.properties['spring.config.location']
        systemProperty "spring.profiles.active", activeProfile
        systemProperty "spring.config.location", "file:$confLoc"
    }
    

    이제 bootRun은 프로필과 설정 위치를 선택합니다.

    포인터에 대해 @jst에 감사드립니다.

  3. ==============================

    3.

    -Dspring.profiles.active=staging -Dspring.config.location=C:\Config
    

    올바르지 않습니다.

    해야한다:

    --spring.profiles.active=staging --spring.config.location=C:\Config
    
  4. ==============================

    4.다음 명령 줄을 사용할 수 있습니다.

    다음 명령 줄을 사용할 수 있습니다.

    java -jar -Dspring.profiles.active=[yourProfileName] target/[yourJar].jar
    
  5. ==============================

    5.OS 변수 SPRING_PROFILES_ACTIVE를 설정하는 또 다른 방법이 있습니다.

    OS 변수 SPRING_PROFILES_ACTIVE를 설정하는 또 다른 방법이 있습니다.

    예 :

    SPRING_PROFILES_ACTIVE=dev gradle clean bootRun
    

    참고 자료 : 활성 스프링 프로파일을 설정하는 방법

  6. ==============================

    6.나는 당신의 문제가 아마도 "/"로 경로를 끝내지 않는 spring.config.location과 관련이 있다고 생각합니다.

    나는 당신의 문제가 아마도 "/"로 경로를 끝내지 않는 spring.config.location과 관련이 있다고 생각합니다.

    문서 인용

    http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files

  7. ==============================

    7.Maven 플러그인을 통해 프로파일을 설정할 때 run.jvmArguments를 통해이를 수행해야합니다.

    Maven 플러그인을 통해 프로파일을 설정할 때 run.jvmArguments를 통해이를 수행해야합니다.

    mvn spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=production"
    

    디버그 옵션 사용 :

    mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -Dspring.profiles.active=jpa"
    

    나는이 여행을 보았다. 많은 사람들이 .. 도움이되기를 바랍니다.

  8. ==============================

    8.Michael Yin의 대답은 정확하지만 더 나은 설명이 필요합니다!

    Michael Yin의 대답은 정확하지만 더 나은 설명이 필요합니다!

    많은 사람들이 -D가 JVM 매개 변수를 지정하는 올바른 방법이며 절대적으로 옳다고 언급했습니다. 하지만 Michael은 Spring Boot Profiles 문서에서 언급 한 바 있습니다.

    설명서에서 명확하지 않은 것은 매개 변수의 종류입니다. --spring.profiles.active는 표준 JVM 매개 변수가 아니므로 IDE에서 사용하려면 올바른 필드 (즉, 프로그램 인수)를 채우십시오.

  9. from https://stackoverflow.com/questions/31038250/setting-active-profile-and-config-location-from-command-line-in-spring-boot by cc-by-sa and MIT license