Spring Boot:使用 yaml 中配置的 Maven 属性
Posted
技术标签:
【中文标题】Spring Boot:使用 yaml 中配置的 Maven 属性【英文标题】:Spring Boot: use of Maven properties configured in yaml 【发布时间】:2017-11-07 12:31:05 【问题描述】:我正在尝试从 Maven 中提取一些属性并在我的应用程序启动时打印它们。我正在使用 Spring Boot,因此资源过滤会自动为我完成。
在我的 application.yml 我有以下内容
applicationName: "@project.artifactId@"
buildVersion: "@project.version@"
buildTimestamp: "@maven.build.timestamp@"
当我在 IntelliJ 上运行它时,我得到了想要的结果,我的属性按预期填充和打印 (单引号的结果相同) 删除引号会给我一个 SnakeYaml 关于使用“@”字符的例外情况
当我在 Cent-OS 上运行它时,通过 jar (java -jar blah..blah) 属性没有被解析,而是被视为字符串,而不是正确的版本号等,打印的是什么是上面引号内的字符串。
关于如何解决这个问题的任何想法? 和我运行jar的方式有关吗?
我以this为例
【问题讨论】:
这有点奇怪......最近我测试了这个并且工作正常,也许这取决于spring-boot
版本......你使用的是什么版本?
我正在使用 1.5.1 。我最终使用 Spring 的属性格式而不是 Yaml 添加了一个额外的属性文件
【参考方案1】:
您可以使用getClass().getPackage().getImplementationVersion()
等方式以编程方式获取它们。
【讨论】:
问题是关于 Maven 属性而不是类包信息(这是在专用的 package-info.class 中声明所必需的)【参考方案2】:@Value("$applicationName")
private String applicationName;
【讨论】:
以上是关于Spring Boot:使用 yaml 中配置的 Maven 属性的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot:使用 yaml 中配置的 Maven 属性
如何使用 spring boot + .yaml 创建配置文件?
如何使用 spring boot + .yaml 创建配置文件?
Spring Boot2 系列教程理解Spring Boot 配置文件 application.properties