Как получить записи из файла manifest.mf в комплекте с jar
Я следую этому руководству по Чтению моего собственного Jar's Manifest, чтобы получить манифестные записи программно.
Я создаю файл JAR с Maven-Assembly-плагин. Файл манифеста находится в META-INF/MANIFEST.MF
внутри файла фляги
Проблема в том, что я получаю пустую запись в любом случае. Я пытался загрузить с помощью JarFile, использование ClassLoaderResources не влияет.
Но если добавить дополнительные записи в pom-файл, используя затем, я могу прочитать эти записи, если они находятся в отдельном разделе (отделенном дополнительной новой строкой).
Если я добавлю записи в раздел основных атрибутов, то они невидимы.
Возможно ли, что по каким-то причинам чтение программно файла manifest.mf отключено?
1 ответ
Я не знаю, почему вы не можете найти записи манифеста без дополнительных зависимостей, но у вас не должно возникнуть проблем с чтением из манифеста. Я делаю это так:
private static final String MANIFEST_FILE_KEY = "META-INF/MANIFEST.MF";
......
try (JarFile jar = new JarFile(URLDecoder.decode(jarFileURL.getPath(), "UTF-8"))) {
Enumeration<JarEntry> entries = jar.entries();
while (entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
if (entry.getName().equals(MANIFEST_FILE_KEY)){
//found our manifest
Manifest manifest = new Manifest(jar.getInputStream(entry));
Attributes attributes = manifest.getMainAttributes();
for (Entry<Object, Object> key : attributes.entrySet()) {
//do something with the key values
}
break;
}
}
}
catch (Exception ex) {
ex.printStackTrace();
}