簡體   English   中英

顯示在JSP中呈現的Spring Boot buildInfo()版本

[英]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的正確方法是什么?

請注意,這是一個遺留應用程序,它限制了我的選擇:

  • 我無法從JSP切換到Thymeleaf等現代替代產品
  • 這些JSP非常簡單。 我不想創建(和復制)控制器來設置必要的變量

另類

我發現以下替代方法行得通,但不是可取的,因為它復制了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單獨獲得。

在您的控制器中:

@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM