Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-从JAR访问pom.xml文件_Java_Maven_Pom.xml - Fatal编程技术网

Java-从JAR访问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项目依赖项列表的插件。为了实现这一点,我读取pom.xml文件并在控制台上打印数据以进行调试。这很好,直到我从JAR文件中尝试了它:我得到了一个FileNotFoundException(对于pom.xml文件)

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

正如我所建议的,我尝试将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?