从 jar 中获取版本号
如果使用 maven-jar-plugin
或 maven-assembly-plugin
将应用程序打包到 jar
中,获取当前 pom 版本的简单方法是在清单中添加一个条目,然后可以从 Java 获得。
秘诀是将 addDefaultImplementationEntries
标志设置为 true(而 addDefaultSpecificationEntries
也需要工件 ID)。
jar 插件配置 :
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>...</mainClass>
<addDefaultImplementationEntries>
true
</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
程序集插件配置 :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
<executions>
<execution .../>
</executions>
</plugin>
addDefaultImplementationEntries
指示 Maven 将以下标题添加到 jar 的 MANIFEST.MF
:
Implementation-Title: display-version
Implementation-Version: 1.0-SNAPSHOT
Implementation-Vendor-Id: test
现在,你可以在 jar 中的任何位置使用此行代码来访问版本号:
getClass().getPackage().getImplementationVersion()