我遵循此Reading my own Jar's Manifest指南以编程方式获取清单条目。
我正在使用maven-assembly-plugin构建jar文件。清单文件位于jar文件中的META-INF/MANIFEST.MF
。
问题是我在任何情况下都是空的。我试图使用JarFile加载,使用ClassLoaderResources无效。
但是如果在pom文件中添加额外的条目,那么我可以读取这些条目,如果它们在单独的部分中(用额外的换行符分隔)。
如果我向主要属性部分添加条目,那么它们是不可见的。
出于某些安全原因,是否有可能以编程方式读取manifest.mf文件?
答案 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();
}