我正在使用以下Gradle片段生成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的正确方法是什么?
请注意,这是一个旧版应用程序,限制了我的选择:
替代
我发现以下替代方法可行,但并不理想,因为它复制了我在应用程序其他地方仍然需要的buildInfo()
插件的行为:
application.version=${project.version}
添加到我自己的application.properties
processResources { expand(project.properties) }
添加到build.gradle
@environment.getProperty('application.version')
答案 0 :(得分:0)
META-INF/build-info.properties
是Spring Boot Actuator配置文件,因此不属于常规应用程序属性。
它的内容可以通过BuildProperties
bean单独获得。
在您的控制器中:
@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>