【问题标题】:Spring Boot: use of Maven properties configured in yamlSpring Boot:使用 yaml 中配置的 Maven 属性
【发布时间】: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 添加了一个额外的属性文件

标签: java maven spring-boot


【解决方案1】:

您可以使用getClass().getPackage().getImplementationVersion() 等方式以编程方式获取它们。

【讨论】:

  • 问题是关于 Maven 属性而不是类包信息(这是在专用的 package-info.class 中声明所必需的)
【解决方案2】:
@Value("${applicationName}")
private String applicationName;

【讨论】:

    猜你喜欢
    • 2019-04-13
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2021-03-06
    • 2020-08-12
    • 2017-05-18
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多