Как получить записи из файла 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();
        }
Другие вопросы по тегам