Maven:无法读取工件描述符

我希望有人能帮我解决一个我正在挣扎的问题。

当我尝试从terminal上构build我的项目时,出现以下错误:

Failed to read artifact descriptor for com.morrislgn.merchandising.common:test-data-utils:jar:0.3b-SNAPSHOT: Could not find artifact com.morrislgn.merchandising:merchandising:pom:0.3b-SNAPSHOT 

common.test-data-utils jar是由一个单独的项目创build的,并且在这个项目与另一个项目之间共享(另一个项目不会构build,但是这是另一个问题)。

我能够build立com.morrislgn.merchandising.common:test-data-utils没有问题,我可以看到它在我的机器上.m2本地存储库中的条目。 我也在Eclipse中重新编制了我的存储库。

我的项目POM有这样的条目:

 <dependency> <groupId>com.morrislgn.merchandising.common</groupId> <artifactId>test-data-utils</artifactId> <version>0.3b-SNAPSHOT</version> </dependency> 

这对我来说似乎是正确的 – POM在Eclipse中查看时不会报告任何错误。

有人能告诉我我在这里失踪或做错了吗?

您可以随时尝试mvn -U clean install

-U强制检查远程存储库上的更新版本和快照

如果您有一些引用父POM的子项目,并且没有从父POM目录(从父目录运行mvn installmvn install ,则可能会出现此问题。 其中一个子项目可能依赖于一个兄弟项目,当它读取兄弟的pom时,它将会失败,并出现问题中提到的错误,除非您至less从父目录安装了一次。

将项目移动到新计算机时,我遇到了这个问题。 我习惯于从子项目运行命令,并没有在父项上运行安装。

如果你使用的是eclipse, 右键单击project – > properties – > Maven ,并确保没有单击“ parsing来自工作区项目的依赖关系 ”。

希望这可以帮助。

我知道我谈话很迟,但是我也有这个问题。 我认为这个问题是我公司的防火墙。 我的解决scheme是从networking拔出,连接到我们的开放无线,然后通过Eclipse强制更新。 这解决了一切。

我解决了这个问题,通过删除存储库文件夹,这个错误显示除了.jar和.pom文件之外的所有东西。

如果你正在使用Eclipse, 右键单击你的项目 – > Maven – > 更新项目 。 它将打开“更新Maven项目”对话框。

在该对话框中,选中“ 强制更新快照/版本”checkbox并单击“ 确定” 。 (请参考下图)

更新Maven项目对话框

这对我有用!

我有同样的问题在Eclipse的Maven构build命令行工作得很好,但尝试这一点

  • 进入.m2 / repository并擦除关联的目录
  • 在eclipse中运行更新maven依赖关系

错误消失….为什么我的mvn命令行工作与这些目录和日食.m2eclipse不能,我不知道,它有点烂。 我的项目现在再次在eclipse中工作。

“无法读取工件描述符”问题通常表明在Maven存储库中依赖的pom文件存在问题。 我build议你仔细检查一下,如果这个pom文件的名字和maven预期的名字是一样的,并且检查这个pom文件的内容是否有效。

与IntelliJ IDEA和下面的工作有相同的问题。

  • 转到File
  • selectSettings
  • selectBuild, Execution, Deployments
  • 从下拉菜单中selectBuild Tools
  • 从下拉菜单中selectMaven
  • 勾选Always update snapshotscheckbox

IntelliJ 2017.2的屏幕快照>首选项/设置>构建,执行,部署>构建工具> Maven>始终更新快照(复选框)

我有一个项目

  A/ |--a1 |--a2 

现在我们组织还有另外一个项目

  B/ |--b1 |--b2 |--b3 

(每个模块a1,b1等和父项目A,B都有自己的pom.xml,按照父,子标准规范)

这两个项目在我的本地eclipse(从SVN)签出。 我正在积极研究A.

我开始知道B中有一个很好的通用function(b4),我需要使用它。

  B/ |--b1 |--b2 |--b3 |--b4 (NEW) 

b4的开发者已经将这个b4模块作为我们组织库中的工件进行部署。 我包括依赖到我的模块的POM,即A2的POM.XML。 Eclipse从repo下载了reuqired工件,我可以导入其中的类。

现在问题开始…我需要检查b4的源代码为了某种目的,因为我已经在我的本地eclipse检查了我从SVN更新它并检出了模块b4。 我还运行了模块b4的pom.xml,包括clean,package等目标。一段时间,当我完成我的编码时,我需要创build一个模块a2的JAR。 我在a2的pom.xml和BAM上运行“包” 错误n为a2模块的错误..这些错误也不是非常人性化。 唯一的事情是在日志里确实有b4的名字。

解决scheme:在尝试了很多小时的解决scheme后,我在B的项目directoty(即../codebase/B)中从控制台运行“mvn -U clean install”。 由于B是父级,所以对于包括b4在内的所有模块运行clean install命令,并且运行成功。 在这之后,我跑了“mvn -U干净安装”为我的父项目是A.这个工作! a2模块得到编译,安装,(以后打包)成功。

这里重要的一点是如果b4在你的工作空间中,不仅要安装b4。 您将需要清理完整的B。阅读Zuill的答案后,我find了这个解决scheme

编辑:在这里再注意一点,如果我没有在本地环境中签出B项目,那么这个问题可能不会发生在我身上。 我倾向于认为这是因为我在本地工作空间检查了B。

你提到两个不同的com.morrislgn.merchandising.commoncom.morrislgn.merchandising.commoncom.johnlewis.jec.webpim.common 。 也许这是问题。

对我来说,它与设置里面的“User Setting.xml”有关

 Window > preferences > Maven > User Settings > and then browsing to the user Settings inside the { maven unarchived directory / }/apache-maven-2.2.1/conf/settings.xml . 

引用Maven错误“无法传输…”

 find ~/.m2 -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \; 

没有任何运气更新通过日食。 不得不使用mvn clean install -U(解决了所有问题)。

我有同样的问题一段时间,尽pipe做mvn -U clean install问题没有得到解决!

我终于通过删除整个.m2文件夹解决了这个问题,然后重新启动我的IDE,问题就没有了!

所以有时候这个问题会因为你本地的maven仓库中的一些不兼容或者问题而上升。

我有一个类似的问题。 在我的情况下,我的.m2 / repositories文件夹中的testng版本已损坏,但是当我删除它并再次做了maven更新时,一切正常。

我在eclipse中遇到了这个问题, mvn -U clean install不起作用,但是右键单击项目并selectMaven-> Update Project修复了它。

我刚开始使用STS Eclipse,第一次使用Maven。 我设置的项目已经有了自己的settings.xml。 如果是这种情况,您将需要在运行configuration中更新您的settings.xml文件。

  1. 右键单击pom.xml,然后单击“运行方式” – >“运行configuration…”

  2. 在那里它说“用户设置”点击文件button,并添加settings.xml。

  3. 我认为这是特定于您的项目,但我的“目标”设置为“干净安装”,我检查了“跳过testing”。

对我来说,它似乎实际上是依赖POM的一个问题。

我使用jitpack虚拟仓库解决了这个问题,可以根据他们的URL而不是他们自己的POM(这在我的情况下似乎是错误的)包含github仓库。

  <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> 

我通过更改maven setting.xml和repository来解决这个问题