在运行应用程序时,banner.txt中定义的应用程序版本不会显示在控制台上.它是根据Spring Boot的文档定义的
${application.version}
该项目使用spring-boot-starter-parent作为父pom(来自start.spring.io的基本项目设置)
好吧,如果我构建项目并通过java -jar运行它,则会打印该版本.但是,如果我在IDE(IntelliJ IDEA)中启动应用程序,则不会打印该版本.
根据关于自定义横幅的Spring Boot文档,值${application.version}
是从jar清单中获取的.
在MANIFEST.MF中声明的应用程序的版本号.例如,Implementation-Version:1.0打印为1.0.
从IDE运行时,通常会针对IDE编译的类文件执行.IDE通常不会经历使用清单构建整个jar的完整周期.因此,在运行时没有MANIFEST.MF可用于替换值${application.version}
,并且您将使用裸令牌.
这不是代码中的错误,并且您已经看到它在执行完整的jar构建时可以正常工作.如果在通过IDE运行时修复此问题非常重要,那么您可以考虑设置一个自定义构建步骤,该步骤首先完成整个jar构建和清单生成.但这可能有点过头了.通过测试jar的真实发布版本,可以在IDE之外验证横幅.
在我的例子中,我查看了spring-boot-maven-plugin创建的清单,里面没有Implementation-version.
要添加它,我在我的pom.xml的build.plugins部分添加了插件maven-jar-plugin.
org.apache.maven.plugins maven-jar-plugin 3.0.2 ${project.version}
之后如前所述,只有当我执行java -jar而不是我的ide时才可以看到带有应用程序版本的横幅