Maven:无法读取工件描述符

Mor*_*lgn 243 java dependencies maven

我希望有人可以帮我解决我正在努力解决的问题.

当我尝试从终端构建我的项目时,我收到此错误:

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
Run Code Online (Sandbox Code Playgroud)

common.test-data-utilsJAR是由一个单独的项目创建,这和其他项目之间共享(其他项目不建或者,但那是下来的问题).

我能够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>
Run Code Online (Sandbox Code Playgroud)

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

有人可以告诉我这里缺少什么或做错了吗?

Gal*_*cha 169

你可以随时试试 mvn -U clean install

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

  • @MrPhi:如果你有m2e插件,那么你可以使用Maven - >"Update Project ...".下一个对话框将有一个强制更新快照和版本的选项. (39认同)
  • 有可能通过Eclipse调用这些命令吗? (5认同)
  • 要使其工作,您应该在项目的根目录中运行命令 (2认同)
  • 我也有类似的问题。这确实有帮助,此外,如果您使用私有 mvn 存储库,请确保首先将其添加到您的 `~/.m2/setting.xml` 镜像部分,然后在运行 `mvn -U clean install` 后,使确保“重新导入”(右键单击该项目,然后在底部“Maven”部分下有一个“重新导入”按钮)。 (2认同)

bzu*_*ith 132

如果您有一些子项目引用父pom而您尚未从父pom目录安装(mvn install从父目录运行),则可能会出现此问题.其中一个子项目可能依赖于兄弟项目,当它读取兄弟的pom时,除非您从父pom目录至少安装一次,否则它将因问题中提到的错误而失败.

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

  • 另外,当在父级上运行`mvn install`时,你也可以为非递归操作添加`-N`.这将导致maven跳过所有模块(包括一个失败的模块),并为父模块执行`install`目标. (13认同)

pri*_*ime 93

与IntelliJ IDEA相同的问题和后续工作.

  • File
  • 选择 Settings
  • 选择 Build, Execution, Deployments
  • Build Tools从下拉列表中选择
  • Maven从下拉列表中选择
  • 勾选Always update snapshots复选框

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

  • 浏览整个互联网之后,这最终对我有用 (2认同)

tha*_*_DG 35

如果您正在使用eclipse,请 右键单击项目 - > properties - > Maven ,并确保未单击" 从工作空间项目中解析依赖项 ".

希望这可以帮助.

  • 这个对我有用.但我不明白为什么?这背后的任何解释? (4认同)

Iam*_*yAV 31

如果您使用的是Eclipse,请右键单击Project - > Maven - > Update Project.它将打开"更新Maven项目"对话框.

在该对话框中,选中" 强制更新快照/版本"复选框,然后单击" 确定".(请参考下图)

更新Maven项目对话框

这对我有用!


rrs*_*rrs 23

我知道我的谈话已经很晚了,但我也遇到了这个问题.我认为这个问题是我公司的防火墙.我的解决方案是拔掉网络连接,连接到我们的开放无线,然后通过Eclipse强制更新.这解决了一切.

  • 您需要将[代理信息放入.m2/settings.xml](https://maven.apache.org/guides/mini/guide-proxies.html) (5认同)

Dea*_*ler 13

我在eclipse中遇到了同样的问题,maven构建命令行运行得很好但是试试这个

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

错误消失....为什么我的mvn命令行使用那些目录和eclipse .m2eclipse不能,我不知道它有点糟透了.我的项目现在再次在eclipse中工作.


小智 10

我通过在存储库文件夹中删除除了.jar和.pom文件之外的所有内容都解决了这个问题.


rlo*_*ezo 9

我在使用IntelliJ时遇到了同样的问题。我通过右键单击pom.xml> Maven>重新导入来解决


Abh*_*ale 8

通过 shell 在项目文件夹内导航并运行以下命令:

mvn -U clean install
Run Code Online (Sandbox Code Playgroud)

通常这应该已经解决了您的问题。

如果您看到这样的消息:

无法解析项目的依赖项:war:0.0.1-SNAPSHOT:无法在 com.sun.jersey:jersey-server:jar:1.9 收集依赖项

然后执行:

export MAVEN_OPTS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2
Run Code Online (Sandbox Code Playgroud)

其次是:

mvn -U clean install
Run Code Online (Sandbox Code Playgroud)

再次最终更新您的依赖项。

然后执行 clean Maven 构建:

maven clean install
Run Code Online (Sandbox Code Playgroud)


eay*_*kin 7

"无法读取工件描述符"问题通常表明maven存储库中依赖项的pom文件存在问题.我建议你仔细检查pom文件的名称是否与maven期望的名称相同,并检查pom文件内容是否有效.


phl*_*tos 5

您提到了两个不同的 groupIdcom.morrislgn.merchandising.commoncom.johnlewis.jec.webpim.common. 也许这就是问题所在。


Ros*_*wal 5

对我来说,这与在其中设置“ 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 . 
Run Code Online (Sandbox Code Playgroud)


sim*_*Dev 5

我有一个项目

 A/
 |--a1
 |--a2
Run Code Online (Sandbox Code Playgroud)

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

 B/
 |--b1
 |--b2
 |--b3
Run Code Online (Sandbox Code Playgroud)

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

这两个项目都在我的本地Eclipse(从SVN)中检出。我正在积极研究A。

我知道B中开发了一个很好的通用功能(b4),我需要使用它。

 B/
 |--b1
 |--b2
 |--b3
 |--b4 (NEW)
Run Code Online (Sandbox Code Playgroud)

b4的开发人员已将此b4模块作为工件部署在我们组织的存储库中。我将对模块POM的依赖性包括在内,即a2的pom.xml。Eclipse从回购中下载了必需的工件,我可以将其中的类导入其中。

现在开始发行...出于某种目的,我需要检查b4的源代码,并且由于我已经在本地日食中检出了B,所以我从SVN更新了它并检出了模块b4。我还运行了b4模块的pom.xml,目标是clean,package等。一段时间后,当我完成编码后,我需要创建模块a2的JAR。我在a2的pom.xml和BAM上运行了“包”!错误n a2模块的错误。这些错误也不是非常用户友好。唯一的事情是日志中肯定有b4的名称。

解决方案:在尝试了许多小时的解决方案很多小时之后,我从B的项目直接性(即在../codebase/B中)从控制台运行了“ mvn -U clean install”。由于B是父级,因此对所有模块(包括b4)都运行了clean install命令,该命令成功运行。之后,我为我的父项目A运行了“ mvn -U clean install”。成功编译,安装(稍后打包)了a2模块。

这里重要的一点是,如果b4在您的工作空间中,则不仅要安装b4。您将需要全新安装B。请阅读Zuill的回答后,我提出了此解决方案

编辑:这里要注意的另一件事是,如果我没有在本地环境中签出B项目,那么对我来说可能不会发生此问题。我倾向于认为这是因为我在本地工作区中签出了B。


Phi*_*off 5

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

我通过使用 jitpack 虚拟存储库解决了这个问题,您可以使用它包含基于 URL 而不是他们自己的 POM 的 github 存储库(这在我的情况下似乎是错误的)。

    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

所以有时候问题会因为本地maven仓库的一些不兼容或者问题而出现。