Java-从JAR访问pom.xml文件
我正在开发一个能够显示Maven项目依赖项列表的插件。为了实现这一点,我读取pom.xml文件并在控制台上打印数据以进行调试。这很好,直到我从JAR文件中尝试了它:我得到了一个FileNotFoundException(对于pom.xml文件)Java-从JAR访问pom.xml文件,java,maven,pom.xml,Java,Maven,Pom.xml,我正在开发一个能够显示Maven项目依赖项列表的插件。为了实现这一点,我读取pom.xml文件并在控制台上打印数据以进行调试。这很好,直到我从JAR文件中尝试了它:我得到了一个FileNotFoundException(对于pom.xml文件) 有没有更好的方法列出Maven项目的依赖项 当我们在JAR文件中时,如何读取pom.xml 正如我所建议的,我尝试将pom.xml文件作为一种资源来读取,结果成功了 MyClass obj = new MyClass(); InputStream p
- 有没有更好的方法列出Maven项目的依赖项
- 当我们在JAR文件中时,如何读取pom.xml
MyClass obj = new MyClass();
InputStream pomFile = obj.getClass().getClassLoader().getResourceAsStream("META-INF/maven/groupId/artifactId/pom.xml");
现在唯一的问题是每个项目的文件路径不同,因为它取决于
groupId
和artifactId
您需要显示正在使用的代码。但重要的提示是,您不能将资源作为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?