如何在WAR应用程序中读取MANIFEST.MF?
我想阅读我的WAR
应用程序的MANIFEST.MF
。 我怎样才能找到它的文件名?
我怎样才能找到它的文件名?
你已经拥有它了。 也许你想找到绝对的文件位置? 您可以使用ServletContext#getRealPath()
。
String relativeWARPath = "/META-INF/MANIFEST.MF"; String absoluteDiskPath = getServletContext().getRealPath(relativeWARPath); File file = new File(absoluteDiskPath); // ...
或者,如果您想直接将其作为InputStream
,请使用ServletContext#getResourceAsStream()
。
InputStream input = getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF"); // ...
我在每个应用程序中都遇到了同样的问题,并决定在其中创建一个带有实用程序类的组件: jcabi-manifests 。 现在很容易从类路径中的一个可用MANIFEST.MF
加载任何属性:
import com.jcabi.manifests.Manifests; String value = Manifests.read("My-Version");
另外,请查看: http : //www.yegor256.com/2014/07/03/how-to-read-manifest-mf.html
有几种方法可以做到,选择的答案仅在您想要读取Servlet / SpringMVC层上的Manifiest文件或您可以访问ServletContext的任何层时才有效。
但是,如果您想在Servlet启动之前读取类似“version”的值,例如在回溯配置或其他情况下,您可能需要执行一些旧的类加载或Manifest文件操作。
我找到了这个github存储库(不是我的),它包含4种不同的方式从Manifest文件中读取信息。 如果ServletContext无法访问您的情况,请检查这些情况。