当我打开一个 POM 文件并单击底部的“依赖层次结构”选项卡时,出现错误“项目读取错误”。它适用于同一工作区中的其他项目,但不适用于此项目。有任何想法吗?
编辑
回应@Yhn 的回答。
- 按预期从命令行运行 Eclipse 外部的编译和打包阶段。它编译应用程序并构建最终的 WAR 文件。
- Eclipse 确实指向 Maven settings.xml 文件的默认位置,因此它应该知道其中定义的自定义存储库(我的公司有自己的 Maven 存储库)。
- 我可以从 Eclipse 打开和编辑 POM 文件,因此它必须具有对该文件的读/写权限。
- 该项目未在 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 许可协议
我遇到了一些需要包含在我的 maven 项目中的非 maven jar 的问题。我使用这个 maven 命令将 jar 放在我的本地存储库中:
然后我在我的 pom.xml 中将它们称为依赖项:
这有一段时间效果很好,但我一定是在 Eclipse 中升级了一些东西,我开始收到你描述的错误。
修复方法是将它们从本地存储库中取出,然后重做安装文件,要求 maven 为您生成一个 pom:
该命令将导致在放置 jar 的同一目录(在您的本地存储库中)中生成一个 pom。
在最新版本的 eclipse maven 支持中,maven 构建仍然使用 maven 2 完成(如果您右键单击 pom.xml,例如选择 run as mvn package)。依赖分析现在使用嵌入式 maven 3 插件完成,它不喜欢没有 pom.xml 的依赖。