代码之家  ›  专栏  ›  技术社区  ›  yegor256

如何在WAR应用程序中读取MANIFEST.MF?

  •  13
  • yegor256  · 技术社区  · 14 年前

    我想看看 MANIFEST.MF 我的 WAR 申请。如何找到它的文件名?

    3 回复  |  直到 14 年前
        1
  •  33
  •   BalusC    14 年前

    如何找到它的文件名?

    你已经有了。也许你想找到文件的绝对位置?你可以用 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");
    // ...
    
        2
  •  10
  •   yegor256    10 年前

    我在每个应用程序中都遇到了相同的问题,并决定创建一个包含实用程序类的组件: 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

        3
  •  0
  •   wonhee    9 年前

    有几种方法可以做到这一点,而选择的答案只有在您想读取Servlet/SpringMVC层或任何可以访问ServletContext的层上的Manifiest文件时才有效。

    但是,如果您想在Servlet启动之前(比如在logback配置期间或其他时候)读取一个类似“version”的值,则可能需要执行一些旧式的类加载或清单文件操作。

    我找到了这个github存储库(不是我的),它包括4种从清单文件读取信息的不同方式。如果ServletContext无法访问您的情况,请查看这些。

    https://github.com/khmarbaise/version-examples