[英]Show Spring Boot buildInfo() version rendered inside JSP
我正在使用以下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的正確方法是什么?
請注意,這是一個遺留應用程序,它限制了我的選擇:
另類
我發現以下替代方法行得通,但不是可取的,因為它復制了buildInfo()
插件的行為,無論如何我在應用程序的其他地方都需要它:
application.version=${project.version}
添加到我自己的application.properties
processResources { expand(project.properties) }
到build.gradle
@environment.getProperty('application.version')
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.