2016-10-02 1 views
2

개발 중에 Gradle을 통해 명령 줄 및/또는 외부 적으로 설정된 시스템 등록 정보를 통해 시작하는 Spring Boot 응용 프로그램에 특정 보안 중요 속성을 전달하려고합니다. build.gradle 스크립트 나 속성 파일 같은 것들은 소스 컨트롤에 커밋되어 공개적으로 사용할 수 있기 때문에 이것들을 쓸 수 없습니다.시스템 등록 정보를 Gradle에서 Spring 부트로 전달

응용 프로그램에서 이러한 값을 사용할 수 있도록 찾은 솔루션 중 하나를 얻을 수 없습니다. Gradle이 Gradle 2.4.4를 사용하여 작동하도록 실행됩니다.

몇 가지 솔루션은 시스템 속성이 bootRun 작업에 설정되어있는 곳, 모양이 완전히 기본 bootRun 작업을 덮어 나타나고 봄 부팅의 자동 메인 클래스 감지 나누기

bootRun { 
    systemProperties System.properties 
} 

.

bootRun { 
    run {systemProperties System.properties} 
} 

이 정상적인 구성을 무시하지 않지만, 실행 클로저 내부에 설정 한 속성은 bootRun 작업 내부 사용할 수 없습니다 :

어딘가 다른이 제안되었다.

이 모든 것은 Intellij를 사용하여 Gradle을 시작할 때 발생합니다.

gradle -Dspring.email.password=123 bootRun 

속성은 어디 설정되지 않습니다에 관계없이 구성 : 내가 명령 줄에서 Gradle을 시작하고, 예를 들어, 속성 방식으로 전달하려고하면

. 인수의 순서를 변경해도 아무 효과가 없습니다.

답변

1

Gradle을 속성으로 JVM의 인수에 합격하여 다음과 같은 구성을 사용하여 응용 프로그램에 전달 :에 jvmargs을 적용

bootRun { 
    if (project.hasProperty('jvmArgs')) { 
     jvmArgs project.jvmArgs.split('\\s+') 
    } 
} 

실행 : ./gradlew bootrun -PjvmArgs="-Dspring.profiles.active=myprofile -Dspring.email.password=secret"

관련 문제