【问题标题】:Gradle exported properties dont work with gradle bootRun in SpringGradle 导出属性不适用于 Spring 中的 gradle bootRun
【发布时间】: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


【解决方案1】:

指定一个在无法找到真实值时使用的默认值?

@Value("${...:defaultValue}")

【讨论】:

  • 这对于 java 类中的 $Value 没问题,但不能解决我的问题 th:text="${@environment.getProperty('app.version')} 但我可以解决这个问题。谢谢.
猜你喜欢
  • 2017-05-27
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 2018-12-02
  • 1970-01-01
  • 2020-10-14
  • 2019-04-24
相关资源
最近更新 更多