2014-07-16 5 views
3

특정 프로필에 내 스프링 부팅 응용 프로그램을 war으로 패키지하고 싶습니다. application.properties 파일에서 spring.profiles.active = 프로파일 이름을으로 설정하면됩니다. 전쟁을 구축 할 때 매개 변수로 설정할 수 있습니까? 예. gradle 빌드 --spring.profiles.active = 프로파일 이름?활성 프로필이있는 Gradle 빌드 스프링 부트 응용 프로그램

+0

'-P' 스위치를 사용하여 gradle 빌드에 매개 변수를 전달할 수 있습니다. 그런 다음 전달 된 속성을 프로젝트 인스턴스와 함께 참조하십시오. – Opal

답변

6

spring.profiles.active 값을 빌드 할 때 전쟁에 넣고 싶다고 들리는군요. 리소스 필터링에 대한 Gradle의 지원을 사용하면됩니다.

[email protected]@ 

을 그리고 속성의 값으로 @activeProfiles 교체를 build.gradle에 필터링을 적용 :이처럼 application.properties을 구성

processResources { 
    filter org.apache.tools.ant.filters.ReplaceTokens, tokens: [ 
     activeProfiles: activeProfiles 
    ] 
} 

을이 예제에서는 activeProfiles라는 이름의 속성을 사용했습니다. 그러면 빌드를 실행할 때 값을 제공해야합니다.

./gradlew -PactiveProfiles=foo build 
+0

Andy,이 솔루션은 저에게 효과적입니다. 그러나 문제는 프로필을 전환 할 때 processResources가 다시 실행되지 않는다는 것입니다. – rakpan

+0

학년이 그것이 최신이라고 잘못 판단한 것처럼 작업을 건너 뛰었을 수도 있습니까? 'clean'도 사용하십시오 :'./gradlew -PactiveProfiles = switched clean build' –

+0

저는이 방법을 저의 프로젝트에서 사용했고, 필터링 된 바이너리 파일에 문제가있었습니다. 배포 후에 응용 프로그램에 글꼴이 제대로 표시되지 않았습니다. 여기에 정의 된대로 프로세스 리소스 작업은 이진 파일이 결국 손상 될 수있는 모든 파일을 처리합니다. 해결책은 필터링 된 파일을 실제로 필터링해야하는 파일로 제한하는 것입니다. 이 블로그 게시물에 자세한 내용이 설명되어 있습니다 : http : //blog.codeleak.pl/2015/1 ... –

관련 문제