gpt4 book ai didi

java - 显示 JSP 内渲染的 Spring Boot buildInfo() 版本

转载 作者:太空宇宙 更新时间:2023-11-04 09:56:14 25 4
gpt4 key购买 nike

我使用以下 Gradle 代码片段生成 Spring Boot 应用程序的构建信息:

springBoot {
buildInfo()
}

这可以确保在 WAR 工件内构建期间使用属性 build.version=1.2.3 (以及其他一些属性)创建一个名为 /META-INF/build-info.properties 的文件

我正在构建 WAR,而不是 JAR,因为我依赖于渲染遗留 JSP。

在这些 JSP 中,我需要打印此版本。我尝试过以下方法:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<spring:eval expression="@environment.getProperty('build.version')" var="version" />

<p>Version is: ${version}</p>

但这仍然是空的。看起来我可以通过这种方式访问​​我的 application.properties 中的任何内容,但不能从其他生成的 build-info.properties

将此版本信息获取到 JSP 的正确方法是什么?

请注意,这是一个遗留应用程序,限制了我的选择:

  • 我无法从 JSP 切换到 Thymeleaf 等现代替代方案
  • 这些 JSP 相当简单。我不想创建(和重复) Controller 来设置必要的变量

替代方案

我发现以下替代方案可行,但并不理想,因为它重复了 buildInfo() 插件的行为,而我在应用程序的其他地方仍然需要该插件:

  • application.version=${project.version} 添加到我自己的 application.properties
  • processResources { Expand(project.properties) } 添加到 build.gradle
  • 访问 JSP 内的 @environment.getProperty('application.version')

最佳答案

META-INF/build-info.properties 是一个 Spring Boot Actuator 配置文件,因此不属于正常应用程序属性的一部分。

其内容可通过 BuildProperties 单独获取 bean 。

在你的 Controller 中:

@Autowired
BuildProperties buildProperties;

. . .
String version = buildProperties.getVersion();

(请注意,仅当 build-info.properties 存在时才定义该 bean,因此最好将其连接为 required=false)

或者通过 SpEL:

@Value("#{buildProperties.get('version')}")
String version;

在 JSP 中,有这样的内容(未经测试):

<spring:eval expression="#{buildProperties.get('version')}" var="version" />

<p>Version is: ${version}</p>

关于java - 显示 JSP 内渲染的 Spring Boot buildInfo() 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54112233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com