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里有一般属性,也有一些和其