在 Eclipse 中打开 Maven POM 文件依赖项层次结构时出错 - “项目读取错误”

2022-09-01 17:42:27

当我打开一个POM文件并单击底部的“依赖关系层次结构”选项卡时,它给我一个错误,“项目读取错误”。它适用于同一工作区中的其他项目,但不适用于此项目。有什么想法吗?

enter image description here

编辑

回应@Yhn的回答。

  1. 从命令行运行 Eclipse 外部的编译和打包阶段,按预期工作。它编译应用程序并生成最终的 WAR 文件。
  2. Eclipse确实指向Maven设置的默认位置.xml文件,因此它应该知道其中定义的自定义存储库(我的公司有自己的Maven存储库)。
  3. 我可以从 Eclipse 打开和编辑 POM 文件,因此它必须对该文件具有读/写权限。
  4. 该项目未在 Eclipse 中配置为 Maven 项目,因此我无法从 Eclipse 运行包阶段(我只能从命令行运行它)。

我想知道这是否与我在使用Maven 3构建项目时遇到问题这一事实有关,因为显然一些传递依赖项是为Maven 1配置的,Maven 3不支持(无论如何,这是我的理论,基于一些错误消息)。我可以使用 Maven 2 构建项目,但我仍然收到如下消息:

Downloading: http://dist.codehaus.org/mule/dependencies/maven2/org/codehaus/xfie/bcprov-jdk14/133/bcprov-jdk14-133.pom
[INFO] Unable to find resource 'org.codehaus.xfire:bcprov-jdk14:pom:133' in repsitory mule (http://dist.codehaus.org/mule/dependencies/maven2)

但是,它必须能够找到这些依赖项,因为它可以很好地下载JAR并且可以构建应用程序。似乎问题在于依赖项没有与之关联的POM文件,这可能就是为什么它们不能与Maven 3一起使用的原因。这可能也是我无法在 Eclipse 中查看依赖层次结构的原因。

编辑 2

我通过转到“配置>转换为Maven项目”将项目转换为Maven项目。当我打开POM文件时,我看到错误:

ArtifactDescriptorException: Failed to read artifact descriptor for woodstox:wst (Click for 140 more)

(woodstox:wst是该项目的另一个传递依赖项)。“标记”视图中出现了一个错误,似乎在我的项目中的每个依赖关系和传递依赖关系中。但是,我可以通过执行“运行方式> Maven 生成”来成功生成项目。(编辑:这可能是因为这个项目没有Java源代码,但依赖项的JAR正确出现在最终的WAR中。依赖项层次结构仍给出相同的错误 - “项目读取错误”。

关于“无法找到资源”消息 - 但这只出现在少数传递依赖项中。该项目具有更多的传递依赖项,但不会为它们显示这些消息。看起来,因为依赖项没有POM文件,所以Maven每次构建项目时都会尝试搜索它们。没有POM是正常的吗?

如何获取存储库管理器?这是必须安装在公司的Maven存储库上的东西,还是可以将其安装在自己的工作站上?


答案 1

我在一些非 maven jar 中遇到了这个问题,我需要将它们包含在我的 maven 项目中。我使用这个maven命令将jars放在我的本地存储库中:

mvn install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2

然后,我将它们称为我的 pom 中的依赖项.xml:

    <dependency>
        <groupId>gov.nist</groupId>
        <artifactId>xccdf</artifactId>
        <version>1.2</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>

这在一段时间内工作得很好,但我一定在eclipse中升级了一些东西,我开始得到你描述的错误。

解决方法是将它们从本地存储库中取出,然后重做安装文件,要求maven为您生成一个pom:

mvn -DgeneratePom=true install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2

该命令将导致在放置 jar 的同一目录(在本地存储库中)生成 pom。

在最新版本的 eclipse maven 支持中,maven 构建仍然是使用 maven 2 完成的(例如,如果右键单击 pom.xml,请选择“以 mvn 包形式运行”)。依赖关系分析现在使用嵌入式maven 3插件完成,该插件不喜欢没有pom.xml的依赖关系。


答案 2

我遇到了同样的问题。如果您将项目设置为 maven 项目,则应运行:

  • 鼠标右键点击项目|马文|更新依赖项或
  • 鼠标右键点击项目|马文|更新项目配置

这对我有用。


推荐