Maven $ {project.version}无效

时间:2017-03-15 13:10:10

标签: java maven spring-boot environment-variables

我想在我的java应用程序中从maven中提取版本代码。我创建了一个application.properties文件,其中包含一个调用$ {project.version}的属性,并将以下内容添加到pom文件中

A$1:A$100

,与此问题非常相似 - Maven ${project.version} doesn't show up in java

然而,这里的不同之处在于我使用的是弹簧靴。当我运行应用程序时输出为“$ {project.version}”,并且在target / application.properties文件中,我可以看到该属性尚未使用版本号更新。

有什么想法吗?

更新 - 我正在使用的文件和代码

application.properties文件

<resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
</resource>

获得财产

application.version=${project.version}

2 个答案:

答案 0 :(得分:4)

来自spring boot documentation

  

因为默认配置文件接受Spring样式占位符   ($ {...})Maven过滤被更改为使用@ .. @占位符(你   可以使用Maven属性resource.delimiter)覆盖它。

您有两种方法可以实现所需的行为: 使用@ .. @语法指定占位符。例如。

application.version=@project.version@

或使用ryanp的answer中提到的属性${resource.delimiter}恢复资源过滤器分隔符。

答案 1 :(得分:2)

spring-boot-starter-parent将资源插件分隔符设置为@而不是默认${*} - 您可以使用${resource.delimiter}属性覆盖此内容。