如何在 /信息执行器端点中获取Spring Boot的版本



可以通过添加 ${spring-boot.version}

如何为/info执行器端点做同样的事情?我尝试将以下两个以下内容添加到我的应用程序属性,但没有运气:

  • info.app.spring-boot.version=${spring-boot.version}
  • info.app.spring-boot.version=@spring-boot.version@

/info端点将打印$ {spring-boot.version}"(or&quot@spring-boot.version@&quort'(,无法解决占位符变量

我的下一个想法是为Spring Boot版本创建Maven属性,并在父母部分中引用它

<properties>
    <spring.boot.version>1.5.3.RELEASE</spring.boot.version>
</properties>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>${spring.boot.version}</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

但这无效,因为Maven处理<parent>节后解决了占位持有人的变量

更新

以下确实有效,但这不是理想的:

@Component
public class MyInfoContributor implements InfoContributor {
    @Override
    public void contribute(Info.Builder builder) {
        builder.withDetail("spring-boot.version", SpringBootVersion.getVersion());
    }
}

这应该有效:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <additionalProperties>
      <spring-boot-version>${spring.boot.version}</spring-boot-version>
    </additionalProperties>
  </configuration>
</plugin>

您不需要app.info属性。

正如您在更新中提到的那样,InfoContributor可用于根据SpringBootVersion中的值添加此属性:

@Component
public class SpringBootVersionInfoContributor implements InfoContributor {
    @Override
    public void contribute(Info.Builder builder) {
        builder.withDetail("spring-boot.version", SpringBootVersion.getVersion());
    }
}

这似乎是添加此细节的一种非常扎实的惯用方法。

最新更新