我想在我的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}
答案 0 :(得分:4)
因为默认配置文件接受Spring样式占位符 ($ {...})Maven过滤被更改为使用@ .. @占位符(你 可以使用Maven属性resource.delimiter)覆盖它。
您有两种方法可以实现所需的行为: 使用@ .. @语法指定占位符。例如。
application.version=@project.version@
或使用ryanp的answer中提到的属性${resource.delimiter}
恢复资源过滤器分隔符。
答案 1 :(得分:2)
spring-boot-starter-parent
将资源插件分隔符设置为@
而不是默认${*}
- 您可以使用${resource.delimiter}
属性覆盖此内容。