【发布时间】:2017-02-06 20:13:51
【问题描述】:
在我的 Spring Boot 项目中,我在 gradle 中有以下片段,它将 gradle 属性导出到 Spring Environment。
processResources {
filesMatching("**/application.properties") {
expand(project.properties)
}
}
我的 application.properties 看起来像这样 (sn-p)
app.version=${jar.version}
效果很好。我可以使用 @value 在 Spring 类中使用 gradle 属性,甚至可以使用
在 thymeleaf 中访问它们th:text="${@environment.getProperty('app.version')}
但现在的问题是:当我使用“gradle bootRun”运行同一个项目时。我得到了这个:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'jar.version' in string value "${jar.version}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
我认为它与 gradle 的 bootRun 工作方式有关,不使用 processResources 或类似的东西?
问题是:我怎样才能让它工作。我不想放弃使用 bootRun。
【问题讨论】:
-
刚刚看到它在这里解释了 github.com/spring-projects/spring-boot/issues/1739 ,但看不到我的问题的任何解决方案。我不介意这些值是否显示在 bootRun 中,但我的应用程序至少应该运行。
标签: java spring gradle spring-boot thymeleaf