: reading MANIFEST.MF file from jar file using JAVA をしてAttributes
に条件付きを追加 - MANIFEST.MFに提示されるタイトルをチェックするには、適切なバージョンを返します。
public static String getManifestInfo() {
Enumeration resEnum;
try {
resEnum = Thread.currentThread().getContextClassLoader().getResources(JarFile.MANIFEST_NAME);
while (resEnum.hasMoreElements()) {
try {
URL url = (URL)resEnum.nextElement();
InputStream is = url.openStream();
if (is != null) {
Manifest manifest = new Manifest(is);
Attributes mainAttribs = manifest.getMainAttributes();
String version = mainAttribs.getValue("Implementation-Version");
String name = mainAttribs.getValue("Implementation-Title");
if (version != null && name != null) {
if ("packagetitle".equals(name))
return version;
}
}
}
catch (Exception e) {
// Silently ignore wrong manifests on classpath?
}
}
} catch (IOException e1) {
// Silently ignore wrong manifests on classpath?
}
return null;
}
これは確かにパッケージ自体についての詳細を知っている場合は、ストリームを()を使用して反復をスキップすることにより、より効果的に行うことができますが、意図したとおり、少なくとも、これは動作します。
この場合も、MANIFEST.MFとpom.propertiesの違いによって異なります。どちらを保持していても、クラスパスからそれらを読んで見てください。 –
MANIFEST.MFの読み方についてもっと調べてみると(うまくいけば、.jarにすでにパッケージ化されています)、私の問題の正しい検索クエリを見つけて、下の解決策に終わりました。 – korgmatose