2015-03-19 9 views
5

Per sostituisce immobili a mia primavera Boot application.yml ho aggiunto:Espansione application.yml durante Gradle processResources dà MissingPropertyException

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

La sostituzione fallisce, ma dà un 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 

Originariamente il mio application.yml contenuto:

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

Nota Queste variabili di Openshift sono conosciute solo nell'ambiente di produzione Openshift ma non quando sono eseguite localmente in modalità dev.

Come indicato sul 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'} così ho cambiato la mia application.yml a:

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

Ma questo dà lo stesso MissingPropertyException. Mi manca qualcosa qui?

+0

Se si esegue una 'proprietà gradle', è possibile visualizzare le variabili OPENSHIFT nell'elenco? –

+0

No, non lo è. È stato runtime risolto utilizzando i segnaposto delle proprietà Spring Boot come documentato qui: http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html –

+0

Ora vedo anche la nota nei documenti che per i plugin-risorse-maven il segnaposto predefinito '$ {*}' è cambiato in '@ * @'. Mi chiedo come funzioni per le risorse di processo gradle. Sembra essere associato a Spring Boot e non Gradle. –

risposta