我在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);
}