The application.yml extension during the Gradle processResources gives a MissingPropertyException

To replace the properties in my Spring Boot application.yml , I added:

 processResources { filesMatching("**/application.yml") { expand(project.properties) } } 

The replacement fails, but gives a MissingPropertyException :

 Caused by: groovy.lang.MissingPropertyException: No such property: OPENSHIFT_MYSQL_DB_HOST for class: SimpleTemplateScript1 at SimpleTemplateScript1.run(SimpleTemplateScript1.groovy:49) at org.gradle.api.internal.file.copy.FilterChain$3.transform(FilterChain.java:95) at org.gradle.api.internal.file.copy.FilterChain$3.transform(FilterChain.java:84) at org.gradle.api.internal.ChainingTransformer.transform(ChainingTransformer.java:37) at org.gradle.api.internal.file.copy.FilterChain.transform(FilterChain.java:39) at org.gradle.api.internal.file.copy.FilterChain.transform(FilterChain.java:46) at org.gradle.api.internal.file.copy.DefaultFileCopyDetails.open(DefaultFileCopyDetails.java:86) at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:56) at org.gradle.api.internal.file.copy.DefaultFileCopyDetails.copyTo(DefaultFileCopyDetails.java:94) at org.gradle.api.internal.file.AbstractFileTreeElement.copyFile(AbstractFileTreeElement.java:93) at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:74) ... 81 more 

Initially, my application.yml contained:

 url: jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/${OPENSHIFT_APP_NAME} 

Note that these Openshift variables are known only in the Openshift workspace, but not when running locally in dev mode.

As stated at http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.Copy.html : You can also include arbitrary Groovy code in the file, such as ${version ?: 'unknown'} , so I changed my application.yml to:

 url: jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST ?: ''}:${OPENSHIFT_MYSQL_DB_PORT ?: ''}/${OPENSHIFT_APP_NAME ?: ''} 

But this gives the same MissingPropertyException . Did I miss something?

+6
source share
1 answer

The Gradle style expand ${..} conflicts with the same placeholder style of Spring properties and therefore must be escaped as \${..} . This is added in the Spring Boot Documents: https://github.com/spring-projects/spring-boot/commit/c0c67f2593dbfd17aa304b43f4da3a3678fa58eb

+7
source

Source: https://habr.com/ru/post/984021/


All Articles