如何从与jar捆绑的manifest.mf文件中获取条目

时间:2014-08-25 14:41:09

标签: java maven maven-assembly-plugin

我遵循此Reading my own Jar's Manifest指南以编程方式获取清单条目。

我正在使用maven-assembly-plugin构建jar文件。清单文件位于jar文件中的META-INF/MANIFEST.MF

问题是我在任何情况下都是空的。我试图使用JarFile加载,使用ClassLoaderResources无效。

但是如果在pom文件中添加额外的条目,那么我可以读取这些条目,如果它们在单独的部分中(用额外的换行符分隔)。

如果我向主要属性部分添加条目,那么它们是不可见的。

出于某些安全原因,是否有可能以编程方式读取manifest.mf文件?

1 个答案:

答案 0 :(得分:3)

我不知道为什么你无法找到没有额外依赖关系的清单条目,但是你不应该从清单中读取任何问题。我是这样做的:

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();
        }