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

Mic*_*ael 21 java eclipse pom.xml maven

当我打开一个POM文件并单击底部的"Dependency Hierarchy"选项卡时,它会给出错误"Project read error".它适用于同一工作区中的其他项目,而不是这个项目.有任何想法吗?

在此输入图像描述

编辑

回应@Yhn的回答.

  1. 从命令行运行Eclipse之外的编译和包阶段按预期工作.它编译应用程序并构建最终的WAR文件.
  2. Eclipse确实指向Maven settings.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)
Run Code Online (Sandbox Code Playgroud)

但它必须能够找到这些依赖关系,因为它可以很好地下载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存储库中,还是可以在自己的工作站上安装?

小智 9

我有一些非maven罐子存在这个问题,我需要将其包含在我的maven项目中.我使用这个maven命令将jar放在我的本地存储库中:

mvn install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2
Run Code Online (Sandbox Code Playgroud)

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

    <dependency>
        <groupId>gov.nist</groupId>
        <artifactId>xccdf</artifactId>
        <version>1.2</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

这个工作正常一段时间,但我必须在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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 你有一个提示我如何找出哪个依赖导致这个问题? (3认同)

Obl*_*bra 7

我有同样的问题.如果您将项目设为maven项目,则应运行:

  • 鼠标右键单击项目| Maven | 更新依赖关系或
  • 鼠标右键单击项目| Maven | 更新项目配置

这对我有用.