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

新手上路,请多包涵

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

在此处输入图像描述

编辑

回应@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)

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

编辑 2

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

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

(woodstox:wst 是该项目的另一个传递依赖项)。对于我的项目中看似每个依赖项和传递依赖项,“标记”视图中都会出现一个错误。但是,我可以通过执行“Run As > Maven build”成功构建项目。 ( 编辑: 这可能是因为该项目没有 Java 源代码,但依赖项的 JAR 正确出现在最终的 WAR 中。)依赖层次结构仍然给出相同的错误——“项目读取错误”。

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

我怎样才能得到回购经理?这是必须安装在公司的 Maven 存储库上的东西,还是可以安装在您自己的工作站上?

原文由 Michael 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 616
2 个回答

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

 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,例如选择 run as mvn package)。依赖分析现在使用嵌入式 maven 3 插件完成,它不喜欢没有 pom.xml 的依赖。

原文由 Glenn 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

  • 鼠标右键单击项目 |行家 |更新依赖项或
  • 鼠标右键单击项目 |行家 |更新项目配置

那对我有用。

原文由 OblongZebra 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题