springboot应用如何在代码中获取Jar包当前的版本号

阅读数:216 评论数:0

跳转到新版页面

分类

python/Java

正文

一、MANIFEST.MF

在jar包下的META-INF文件夹下有一个MANIFEST.MF文件。

Manifest-Version: 1.0
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Implementation-Title: spring-boot-version
Implementation-Version: 1.0.23
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
Start-Class: cn.felord.SpringBootVersionApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.4.5
Created-By: Maven Jar Plugin 3.2.0
Main-Class: org.springframework.boot.loader.JarLauncher

如果没有相关内容,记得配置maven-jar-plugin.

里面包含我定义的版本号1.0.23,可以通过下面的代码获取:

String version = this.getClass().getPackage().getImplementationVersion()

二、pom.properties

同样在META-INF目录下,会有此文件,也可以从这里获取。

三、从配置文件读取

maven在构建项目时可以通过资源插件将pom.xml中的属性注入到指定的资源文件中,

例如

<build>
  ...
  <resources>
    <!-- include main.properties -->
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
      <includes>
        <include>main.properties</include>
      </includes>
    </resource>
  </resources>
  ...
</build>

恰好spring-boot-starter-parent中已经设置了这种方式

      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
          <include>**/application*.yml</include>
          <include>**/application*.yaml</include>
          <include>**/application*.properties</include>
        </includes>
      </resource>

如果是application.properties,可以通过下面的方式来接收版本号

application.version = ${project.version}

如果是application.yml,可以通过下面的方式来接收版本号

application:
  version: '@project.version@'

 




相关推荐

打开Java的JAR文件我们经常可以到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息。

一、MANIFEST.MF 静态文本通常用来作为配置文件,MANIFEST.MF对于Java程序员来说是个常见的文件,它用来标识当前jar包的各种属性,MANIFEST.MF里有一般属性,也有一些和其