应用程序版本不会显示在Spring Boot横幅中.txt

2022-09-01 09:30:49

运行应用程序时,横幅.txt中定义的应用程序版本不会显示在控制台上。它是根据Spring Boot的文档定义的

${application.version}

该项目使用 spring-boot-starter-parent 作为父 pom(从 start.spring.io)


答案 1

好的,如果我构建项目并通过java -jar运行它,则会打印版本。但是,如果我在我的IDE(IntelliJ IDEA)中启动应用程序,则不会打印该版本。

根据有关自定义横幅的 Spring Boot 文档,的值取自 jar 清单。${application.version}

在清单中声明的应用程序的版本号。断续器例如,实现版本:1.0 打印为 1.0。

从 IDE 运行时,通常针对 IDE 编译的类文件执行。IDE 通常不会经历使用清单构建整个 jar 的完整周期。因此,没有清单。MF 在运行时可用于替换 的值,并且您只剩下裸令牌。${application.version}

这不是代码中的错误,并且您已经看到在执行完整的jar构建时它可以正常工作。如果在运行 IDE 时修复此问题非常重要,则可以考虑设置一个自定义生成步骤,该步骤首先完成完整的 jar 生成和清单生成。不过,这可能有点过分了。稍后可以在 IDE 外部通过针对 jar 的实际发布版本进行测试来验证横幅。


答案 2

另一种解决方案:

使用 maven 资源插件“过滤”(替换)资源文件中的属性。

在 pom 中,使用以下定义激活资源筛选:

<resources>
    <resource>
        <filtering>true</filtering>
        <directory>src/main/resources</directory>
        <includes>
            <include>application.properties</include>
        </includes>
    </resource>
</resources>

在应用程序属性文件中:

info.app.name=@project.artifactId@
info.app.version=@project.version@

在横幅中.txt文件:

${info.app.name} (${info.app.version})

推荐