Normalmente quando utilizamos o Spring Boot
e queremos carregar uma propriedade do pom.xml
nos arquivos de resources
utilizamos o delimitador @
, isso atualmente funciona de maneira automática.
Recentemente tive que implementar essa funcionalidade com o Gradle
, e diferente do Maven
isso não funciona de forma automática e a maneira de acesso as propriedades é diferente.
Tentei seguir a implementação da própria documentação do Spring Boot
nesse link , que sugere configurar a task processResources
no arquivo build.gradle
do projeto da seguinte maneira:
#File: build.gradle
description = "Project description"
#[...]
processResources {
expand(project.properties)
}
#[...]
A utilização dos properties
do Gradle
no application.yml
é realizada pelo delimitador ${...}
segue um exemplo pegando a description
contida no build.gradle
do projeto:
# File: application.yml
application:
version: ${description}
Porém ao realizar esse procedimento me deparei com o seguinte erro:
Failed to parse template script (your template may contain an error or be trying to use expressions not currently supported): startup failed:
SimpleTemplateScript5.groovy: 2: unexpected char: ‘\’ @ line 2, column 35.
| .’ / | | | .—‘ / O \ | ,’.| | ,—–. / O \ | .–. ‘ ‘ .–./ | ‘–‘ |
^
1 error
Esse problema aparece somente após realizar a configuração do processResources
, realizei uma pesquisa rápida e encontrei a seguinte solução para configura-lo:
processResources {
filesMatching("application.yml") {
expand(project.properties)
}
}
O filesMatching
realiza um filtro para aplicar as propriedades, no caso selecionamos somente o arquivo application.yml