【发布时间】:2019-06-04 08:26:36
【问题描述】:
我正在使用以下 Gradle sn-p 生成我的 Spring Boot 应用程序的构建信息:
springBoot {
buildInfo()
}
这可确保在构建过程中在 WAR 工件内部创建一个名为 /META-INF/build-info.properties 的文件,并使用属性 build.version=1.2.3(以及其他一些属性)
我正在构建一个 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 相当简单。我不想创建(和复制)控制器来设置必要的变量
替代方案
我发现以下替代方法可行,但并不理想,因为它复制了我在应用程序的其他地方无论如何都需要的 buildInfo() 插件的行为:
- 将
application.version=${project.version}添加到我自己的application.properties - 将
processResources { expand(project.properties) }添加到build.gradle - 在JSP里面访问
@environment.getProperty('application.version')
【问题讨论】:
标签: java spring spring-boot jsp gradle