我在Wildfly 8.1.0服务器中运行了一个Web服务。

Web服务的WAR文件在MANIFEST.MF文件中包含以下行:

实施版本:1.0.32

我想从API的其中一个端点读取此内容。我尝试了互联网上发现的几件事情:

getClass().getPackage().getImplementationVersion()


返回null。还要使用jcabi清单库:

Manifests.read("Implementation-Version");


返回8.1.0.Final。这使我认为它实际上是在读取Wildfly的清单文件。

如何阅读WAR清单文件中的内容?

最佳答案

这就是Spring Boot对get back the implementation version from a Jar所做的。

因为可以将Web ARchive视为与Java ARchive相同的方式(是的,这是有意的大写),所以人们认为使用JarFile类读取清单就足够了。

另外,由于我不知道该WAR在项目生命周期中的哪个位置,因此我无法规定与Spring所拥有的源代码(在此完整引用)不同的内容。您必须从某个位置读取文件,然后才能从中获取清单。

private static String getImplementationVersion(JarFile jarFile) throws IOException {
    return jarFile.getManifest().getMainAttributes().getValue(Attributes.Name.IMPLEMENTATION_VERSION);
}

09-30 21:13