【问题标题】:Java - access pom.xml file from JARJava - 从 JAR 访问 pom.xml 文件
【发布时间】:2018-01-16 09:02:47
【问题描述】:

我正在开发一个能够显示 Maven 项目依赖项列表的插件。为了使这成为可能,我阅读了 pom.xml 文件并在控制台上打印数据以进行调试。这工作得很好,直到我从 JAR 文件中尝试过:我得到了 FileNotFoundException(对于 pom.xml 文件)

  • 有没有更好的方法来列出 Maven 项目的依赖项?
  • 当我们在 JAR 文件中时如何读取 pom.xml ?

Here is my original question

【问题讨论】:

  • 您需要显示您正在使用的代码。但重要的提示是,您不能从类路径中读取资源作为java.io.File 对象,因为 jar 中没有“文件”/
  • 我不能,因为我的代码在我公司的另一台计算机上,我无法将数据移动到我的个人计算机上。我使用了原始问题中指定的代码进行了小幅升级,但这在这里并不重要。我必须使用InputStream 吗?如果是,我如何在 jar 文件中调用InputStream,当它不在 Jar 文件中运行时,我如何使用java.io 中的File
  • 您可以尝试将 pom.xml 作为资源读取。
  • 我想将 pom.xml 作为资源读取时工作,但我必须指定路径并且它是动态的:META-INF/maven/{groupId}/{artifactId}/pom.xml。我不知道如何在运行时获取这两个具体数据
  • 你知道 mvn dependency:tree 之类的东西吗?

标签: java maven pom.xml


【解决方案1】:

按照JF Meier 的建议,我尝试将 pom.xml 文件作为资源读取,并且成功了。

MyClass obj = new MyClass();
InputStream pomFile = obj.getClass().getClassLoader().getResourceAsStream("META-INF/maven/groupId/artifactId/pom.xml");

现在唯一的问题是每个项目的文件路径都不相同,因为它取决于groupIdartifactId

【讨论】:

    猜你喜欢
    • 2018-12-07
    • 2016-04-24
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2017-11-27
    • 2011-01-15
    • 2014-05-01
    相关资源
    最近更新 更多