如何阅读我的 META-INF/MANIFEST。MF 文件在 Spring Boot 应用中?

2022-09-02 11:58:24

我正在尝试阅读我的 META-INF/MANIFEST。MF 文件从我的 Spring Boot Web 应用程序(包含在 jar 文件中)。

我正在尝试以下代码:

        InputStream is = getClass().getResourceAsStream("/META-INF/MANIFEST.MF");

        Properties prop = new Properties();
        prop.load( is );

但显然,在Spring Boot的幕后有一些东西被加载了一个不同的manifest.mf(而不是我自己位于META-INF文件夹中)。

有谁知道我如何在我的Spring Boot应用程序中读取我的清单应用程序?

更新:经过一些研究,我注意到使用通常的方式读取manifest.mf文件,在Spring Boot应用程序中,这是正在访问的Jar

org.springframework.boot.loader.jar.JarFile

答案 1

我使用java.lang.Package从清单中读取spring boot中的属性。Implementation-Version

String version = Application.class.getPackage().getImplementationVersion();

该属性应在Implementation-Versionbuild.gradle

jar {
    baseName = "my-app"
    version =  "0.0.1"
    manifest {
        attributes("Implementation-Version": version)
    }
}

答案 2

很简单,只需添加此

    InputStream is = this.getClass().getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF");

    Properties prop = new Properties();
    try {
        prop.load( is );
    } catch (IOException ex) {
        Logger.getLogger(IndexController.class.getName()).log(Level.SEVERE, null, ex);
    }

为我工作。

注意:

getClass().getClassLoader() 很重要

“META-INF/MANIFEST。MF“ 而不是 ”/META-INF/MANIFEST。液化物

谢谢亚历山大


推荐