部署war文件时,不会替换banner.txt中的占位符

时间:2015-07-23 07:51:55

标签: spring-boot

我已经构建了一个spring boot应用程序,我正在尝试自定义横幅以显示我的应用程序的版本。 阅读完文档后,我设法在类路径中创建了banner.txt,并在里面添加了 $ {application.formatted-version} 占位符。 我还设法创建了一个包含 Implementation-Version 的清单文件(使用Gradle)。

直接执行jar文件时,一切正常,但在创建war文件时,会显示横幅,但不会替换版本占位符。

经过一些调试后,这个方法似乎成了问题的根源 的 org.springframework.boot.ResourceBanner.getApplicationVersion()

运行war文件时,调用 sourcePackage.getImplementationVersion()始终返回null

清单文件位于war文件/META-INF/MANIFEST.MF的根目录下 该应用程序部署在独立的tomcat 8.0.15

知道什么是错的?

1 个答案:

答案 0 :(得分:2)

这是Tomcat中的错误/限制。它无法从爆炸的WAR文件中找到/META-INF/MANIFEST.MF,导致其ClassLoader定义具有null实现版本的包。这已在Tomcat中修复,但修复程序还没有成为一个版本。它将在8.0.25。

如果您有兴趣,可以some more information in this Spring Boot issuethis is the change that was made to Tomcat