diff options
Diffstat (limited to 'dozentenmodul/src/main/java')
| -rw-r--r-- | dozentenmodul/src/main/java/models/Version.java | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/dozentenmodul/src/main/java/models/Version.java b/dozentenmodul/src/main/java/models/Version.java index a5eafe6d..b63e5e6e 100644 --- a/dozentenmodul/src/main/java/models/Version.java +++ b/dozentenmodul/src/main/java/models/Version.java @@ -1,7 +1,11 @@ package models; +import java.io.IOException; import java.io.InputStream; +import java.net.URL; import java.util.Properties; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; public class Version { @@ -11,15 +15,28 @@ public class Version { // Maven writes a version number derived from the current timestamp // to MANIFEST.MF - read it if (version == null) { + JarFile jf = null; try { - InputStream is = Version.class - .getResourceAsStream("/META-INF/MANIFEST.MF"); + String classPath = Version.class.getName().replace('.', '/') + ".class"; + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + URL classPathUrl = classLoader.getResource(classPath); + String jarPath = classPathUrl.getPath().replaceAll("![^!]*$", "").replaceAll("^(file:|jar:)*", ""); + jf = new JarFile(jarPath); + JarEntry je = jf.getJarEntry("META-INF/MANIFEST.MF"); + InputStream is = jf.getInputStream(je); Properties p = new Properties(); p.load(is); version = p.getProperty("Version-Timestamp"); } catch (Exception e) { e.printStackTrace(); version = "unknown"; + } finally { + if (jf != null) + try { + jf.close(); + } catch (IOException e) { + + } } } return version; |
