获取jar包版本
获取maven打包的jar包的版本信息(<groupId>com</groupId><artifactId>jarname</artifactId><version>1.1.0</version>):
public static String getVersionFromManifest(String jarPath) throws IOException { JarFile jar = new JarFile(jarPath); Manifest manifest = jar.getManifest(); Attributes attributes = manifest.getMainAttributes(); return attributes.getValue(MANIFEST_VERSION_KEY); }
String MANIFEST_VERSION_KEY = "Implementation-Version";
注意:需要在pom.xml文件的中加入:<addDefaultImplementationEntries>true</addDefaultImplementationEntries>,否则生成的META-INF\MANIFEST.MF文件中不会有Implementation-Version属性
<build>
<finalName>jarname</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version> <!-- 使用当前稳定版本 -->
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- 打包为可执行JAR文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version> <!-- 使用当前稳定版本 -->
<!-- 如果需要设置主类以便直接运行JAR -->
<configuration>
<!-- 指定MANIFEST.MF中的Main-Class属性 -->
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.jarname.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!-- 或者使用maven-assembly-plugin创建包含依赖的“fat”或“uber”JAR -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.4.2</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase> <!-- 绑定到package阶段 -->
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<mainClass>com.jarname.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
浙公网安备 33010602011771号