Gradle 导出属性不适用于 Spring 中的 gradle bootRun
Posted
技术标签:
【中文标题】Gradle 导出属性不适用于 Spring 中的 gradle bootRun【英文标题】:Gradle exported properties dont work with gradle bootRun in Spring 【发布时间】: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 中,但我的应用程序至少应该运行。 【参考方案1】:指定一个在无法找到真实值时使用的默认值?
@Value("$...:defaultValue")
【讨论】:
这对于 java 类中的 $Value 没问题,但不能解决我的问题 th:text="$@environment.getProperty('app.version') 但我可以解决这个问题。谢谢.以上是关于Gradle 导出属性不适用于 Spring 中的 gradle bootRun的主要内容,如果未能解决你的问题,请参考以下文章
@JsonCreator 不适用于 Spring MVC 中的 @RequestParams
Thymeleaf 3 URL 解析不适用于 Spring Boot 4 + Spring Security
带有 Spring Boot 的 Spring MVC 不适用于 Eclipse 的 Tomcat 服务器