Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- JarInputStream jarStream = new JarInputStream(stream);
- Manifest mf = jarStream.getManifest();
- public static String getManifestInfo() {
- Enumeration resEnum;
- try {
- resEnum = Thread.currentThread().getContextClassLoader().getResources(JarFile.MANIFEST_NAME);
- while (resEnum.hasMoreElements()) {
- try {
- URL url = (URL)resEnum.nextElement();
- InputStream is = url.openStream();
- if (is != null) {
- Manifest manifest = new Manifest(is);
- Attributes mainAttribs = manifest.getMainAttributes();
- String version = mainAttribs.getValue("Implementation-Version");
- if(version != null) {
- return version;
- }
- }
- }
- catch (Exception e) {
- // Silently ignore wrong manifests on classpath?
- }
- }
- } catch (IOException e1) {
- // Silently ignore wrong manifests on classpath?
- }
- return null;
- }
- Package aPackage = MyClassName.class.getPackage();
- String implementationVersion = aPackage.getImplementationVersion();
- String implementationVendor = aPackage.getImplementationVendor();
- import java.io.File;
- import java.net.URL;
- import java.util.jar.Attributes;
- import java.util.jar.Manifest;
- import org.apache.commons.lang.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class AppVersion {
- private static final Logger log = LoggerFactory.getLogger(AppVersion.class);
- private static String version;
- public static String get() {
- if (StringUtils.isBlank(version)) {
- Class<?> clazz = AppVersion.class;
- String className = clazz.getSimpleName() + ".class";
- String classPath = clazz.getResource(className).toString();
- if (!classPath.startsWith("jar")) {
- // Class not from JAR
- String relativePath = clazz.getName().replace('.', File.separatorChar) + ".class";
- String classFolder = classPath.substring(0, classPath.length() - relativePath.length() - 1);
- String manifestPath = classFolder + "/META-INF/MANIFEST.MF";
- log.debug("manifestPath={}", manifestPath);
- version = readVersionFrom(manifestPath);
- } else {
- String manifestPath = classPath.substring(0, classPath.lastIndexOf("!") + 1) + "/META-INF/MANIFEST.MF";
- log.debug("manifestPath={}", manifestPath);
- version = readVersionFrom(manifestPath);
- }
- }
- return version;
- }
- private static String readVersionFrom(String manifestPath) {
- Manifest manifest = null;
- try {
- manifest = new Manifest(new URL(manifestPath).openStream());
- Attributes attrs = manifest.getMainAttributes();
- String implementationVersion = attrs.getValue("Implementation-Version");
- implementationVersion = StringUtils.replace(implementationVersion, "-SNAPSHOT", "");
- log.debug("Read Implementation-Version: {}", implementationVersion);
- String implementationBuild = attrs.getValue("Implementation-Build");
- log.debug("Read Implementation-Build: {}", implementationBuild);
- String version = implementationVersion;
- if (StringUtils.isNotBlank(implementationBuild)) {
- version = StringUtils.join(new String[] { implementationVersion, implementationBuild }, '.');
- }
- return version;
- } catch (Exception e) {
- log.error(e.getMessage(), e);
- }
- return StringUtils.EMPTY;
- }
- }
- final String value = Manifests.read("My-Version");
- public static String readManifest(String sourceJARFile) throws IOException
- {
- ZipFile zipFile = new ZipFile(sourceJARFile);
- Enumeration entries = zipFile.entries();
- while (entries.hasMoreElements())
- {
- ZipEntry zipEntry = (ZipEntry) entries.nextElement();
- if (zipEntry.getName().equals("META-INF/MANIFEST.MF"))
- {
- return toString(zipFile.getInputStream(zipEntry));
- }
- }
- throw new IllegalStateException("Manifest not found");
- }
- private static String toString(InputStream inputStream) throws IOException
- {
- StringBuilder stringBuilder = new StringBuilder();
- try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)))
- {
- String line;
- while ((line = bufferedReader.readLine()) != null)
- {
- stringBuilder.append(line);
- stringBuilder.append(System.lineSeparator());
- }
- }
- return stringBuilder.toString().trim() + System.lineSeparator();
- }
Add Comment
Please, Sign In to add comment