【问题标题】:Access MANIFEST.MF files of project dependencies using maven使用 maven 访问项目依赖项的 MANIFEST.MF 文件
【发布时间】:2020-07-20 23:21:18
【问题描述】:

我有一个 maven 项目,其中包含几个由我的团队内部开发的依赖项。我需要在当前项目的构建时包含在这些依赖项的 MANIFEST.mf 文件中的一些信息。

只是为了清楚。我不想从我自己的 MANIFEST.mf 文件(我正在构建的项目中的那个)中获取信息。我想在构建时访问项目依赖项的 MANIFEST.mf 文件中包含的信息。

我构建了一个 maven 插件,我可以在其中检查依赖关系树并检索有关依赖关系的一些基本信息,但是我还没有找到直接访问 MANIFEST.mf 文件的方法。

您对我如何(以编程方式)访问它们有任何线索吗?

谢谢!

【问题讨论】:

  • 你检查过这个stackoverflow.com/questions/1272648/…吗?
  • 如果你真的使用 Maven 项目,你不需要访问 MANIFEST.MF 文件来获取依赖项,因为它们位于 pom.xml 文件中。但听起来你在 OSGi 项目中工作?除此之外,我想知道您的插件有什么用途?
  • @NicolasFilotto 我的问题不涉及我项目的 MANIFEST.mf 文件。我编辑了我的问题以避免这种误解。
  • @lane.maxwell 我的问题不涉及我项目的 MANIFEST.mf 文件。我编辑了我的问题以避免这种误解。

标签: java maven jar maven-plugin manifest.mf


【解决方案1】:

也许这样的东西对你有用

public void readManifests() throws IOException {
    URLClassLoader classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();

    for(URL url: classLoader.getURLs()) {
        Manifest manifest = new JarFile(url.getFile()).getManifest();
    }
}

【讨论】:

    【解决方案2】:

    使用工件的文件创建一个 https://docs.oracle.com/javase/8/docs/api/java/util/jar/JarFile.html ,它使您可以访问 Manifest

    【讨论】:

    • 这似乎指向了正确的方向。但是,您如何获得您以编程方式提到的工件文件。我正在使用 org.apache.maven.artifact.Artifact 与依赖项进行交互,但我不知道如何获取 jar 文件。
    • 每个工件都有一个文件的引用:maven.apache.org/ref/3.3.9/maven-artifact/apidocs/org/apache/…
    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 2012-09-06
    • 2018-10-20
    • 2014-05-25
    • 2011-09-10
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    相关资源
    最近更新 更多