2016-10-13 3 views
0

나는 다중 모듈 응용 프로그램을 가지고 있으며 /src/main/resources 폴더의 모든 하위 프로젝트 중 application.properties에서 사용할 수 있도록 gradle.properties에 정의한 속성을 추가하고 싶습니다.application.properties 리소스에 Gradle 속성을 추가하십시오.

내가 밟은 것은 subprojects 섹션에 processResources 플러그인을 추가하는 것입니다.

예를 들어
subprojects { 

    processResources { 
     expand(project.properties) 
    } 
// ... 

, 나는 gradle.properties 파일에 다음과 같은 속성을 정의했습니다 :

appVersion='0.0.1-SNAPSHOT' 

지금, 나는 그것이 application.properties 존재가되고 싶어요, 그래서 here을 언급 한 바와 같이 나는 자리를 추가했습니다 . 내가 Spring 사용하여 사용하는 예를 들어 싶습니다 나중에

app.version=${appVersion} 

: 그래서, 내 application.properties는 다음과 같은 방법을 보이는 프로젝트가 건설 된 후

@Value("${app.version}") 

그러나, 속성은 대체되지 않습니다, 그래서 application.properties에 버전 값이없고 여전히 ${appVersion} 자리 표시 자입니다. 어떻게해야할까요?

답변

0

문제는 Gradle 구성에 없었다,하지만 내 Spring Boot 응용 프로그램이 시작하는 방법. 내게 잘 작동하지 않는 Intellij IDEA에서 직접 main() 메서드를 실행하고 있었는데 아마도 일부 작업이 제대로 실행되지 않았습니다.

그래서 해결책은 ./gradlew bootRun 명령을 실행하는 것입니다. 이렇게하면 속성이 올바르게 대체됩니다.

1

별도의 목적으로 별도의 폴더가 있어야한다고 생각합니다. 따라서 application.propertiessrc/main/filteredResources으로 이동하는 것이 좋습니다. 그런 다음 :

import org.apache.tools.ant.filters.ReplaceTokens 

processResources { 
    with copySpec { 
     from 'src/main/filteredResources' 
     filter(ReplaceTokens, tokens: project.properties) 
    } 
} 
+0

제안을 주셔서 감사합니다. 아마도 내가 권고 한대로 자원을 분리 할 것입니다. 그러나 문제는 내가 응용 프로그램을 실행하는 방식이었고 이미 내 자신의 질문에 대답했습니다. –

+0

전체'FileCollection'에'expand()'를 사용하는 것은 나쁜 생각입니다. 느려지고 바이너리 (예 : 이미지)가 손상 될 수도 있습니다. –

+0

감사합니다. 나는 그것을 application.properties 파일에서만 변경합니다. –

관련 문제