Maven:无法读取工件描述符

时间:2011-07-10 16:06:35

标签: java maven dependencies

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

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

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由一个单独的项目创建,并在此项目和另一个项目之间共享(另一个项目也没有构建,但这是另一个问题)。

我可以毫无问题地构建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>

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

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

26 个答案:

答案 0 :(得分:146)

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

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

答案 1 :(得分:119)

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

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

答案 2 :(得分:76)

与IntelliJ IDEA有相同的问题,以下工作。

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

screen shot of IntelliJ 2017.2 > Preferences/Settings > Build, Execution, Deployment > Build Tools > Maven > Always update snapshots (checkbox)

答案 3 :(得分:35)

如果您正在使用eclipse, 右键点击项目 - &gt;属性 - &gt;行家 并确保&#34; 解决工作区项目的依赖关系&#34;没有点击。

希望这会有所帮助。

答案 4 :(得分:27)

如果您使用的是Eclipse,右键单击您的项目 - &gt; Maven - &gt; 更新项目。它将打开“更新Maven项目”对话框。

在该对话框中,选中强制更新快照/版本复选框&amp;点击确定。 (请参考下图)

Update Maven Project Dialog Box

这对我有用!

答案 5 :(得分:21)

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

答案 6 :(得分:11)

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

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

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

答案 7 :(得分:9)

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

答案 8 :(得分:7)

我使用IntelliJ遇到了同样的问题。右键单击pom.xml&gt;我解决了Maven&gt;再次导入

答案 9 :(得分:6)

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

答案 10 :(得分:4)

我有一个项目

 A/
 |--a1
 |--a2

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

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

(每个模块a1,b1等和父项目A,B都有自己的pom.xml,符合父母和孩子的标准maven规则)

这两个项目都在我的本地日食(来自SVN)上检出。我正在积极研究A.

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

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

b4的开发人员已将此b4模块作为工件部署在我们的org存储库中。我将依赖性包含在我的模块的POM中,即a2的pom.xml。 Eclipse从repo下载了reuqired artifact,我可以在其中导入类。

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

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

重要的一点是,如果b4在您的工作区中,不仅要安装b4。您将需要清理安装完整的B.我在阅读 Zuill

的答案后找到了这个解决方案

编辑:还有一件事要注意,如果我没有在本地环境中检出B项目,那么这个问题可能不会发生在我身上。我倾向于认为发生了这种情况,因为我在本地工作区检查了B。

答案 11 :(得分:3)

答案 12 :(得分:3)

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

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

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

答案 13 :(得分:3)

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

答案 14 :(得分:3)

对我来说,这与在

中设置“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 . 

答案 15 :(得分:3)

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

答案 16 :(得分:2)

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

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

因此,由于本地maven存储库中存在某些不兼容性或问题,有时会出现问题。

答案 17 :(得分:1)

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

答案 18 :(得分:1)

在我们的例子中,由于不正确的groupId重命名而出现错误,而多模块Maven配置中的某些项目引用了其他项目。

我们有一个聚合器项目(billing-parent),包含两个模块(billing-apibilling):

com.company.team:billing-parent
|-com.company.team:billing-api
|-com.company.team:billing

项目billing取决于billing-api。所以在其pom.xml中它有:

<dependency>
    <groupId>com.company.team</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

我们决定将groupId从com.company.team重命名为com.company.team.billing。我们替换了两个模块中父级pom.xml<parent>部分中的旧值。但忘了更新上面的依赖。所以我们得到了billing项目引用旧billing-api工件的配置。最终它会在一段时间后出现billing模块,并出现错误,如

[ERROR] Failed to execute goal on project billing: Could not resolve dependencies for project com.company.team.billing:billing:jar:3.5.1-SNAPSHOT: Failed to collect dependencies at com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to read artifact descriptor for com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failure to find <parent of the com.company.team:billing-parent project which is not available any more>

尽管billing-api模块构建没有错误。

解决方案1:同时重命名groupId中的dependency

解决方案2:将groupId替换为${project.groupId}属性,如下所示:

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

<强>结论 因此,如果您遇到多模块配置中的错误,我的建议应该是:彻底检查邻居模块的依赖关系的groupIdartifactId

答案 19 :(得分:0)

这对我有帮助:

从IDE(在我的情况下为Red Hat CodeReady Studio)。

Windows->显示视图->终端->打开/添加本地终端

按如下所示运行命令>

$ cd /pom-file-path/

$ mvn -U clean install

答案 20 :(得分:0)

转到工作空间路径并进入项目文件夹

运行以下命令

mvn -U全新安装

如果您看到类似于以下的按摩:

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

然后输入以下命令:

export MAVEN_OPTS = -Dhttps.protocols = TLSv1,TLSv1.1,TLSv1.2

然后再次发出命令

mvn -U全新安装

现在,您可以看到错误已消失!

现在清理并构建Maven项目。

答案 21 :(得分:0)

问了九年后,我知道我很勇敢...

对我来说,这是一个找不到子依赖项的问题。通过查看包含An internal error occurred during: "Building".行的“错误日志”视图,我终于找到了真正的问题。双击它会显示一个带有堆栈跟踪的弹出窗口,最后一个原因最终在我的本地存储库中显示了一个损坏的JAR。我整理了一下,Eclipse / m2e可以再次工作。

答案 22 :(得分:0)

此错误基本上是说maven无法从本地存储库读取某个依赖项。可能是由于jar文件未正确下载而发生的。因此,请转到您的Maven本地存储库,并确保没有任何 .lastUpdated 扩展文件。

答案 23 :(得分:0)

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

  1. 右键单击pom.xml和&#34; Run As&#34; - &GT; &#34;运行配置......&#34;

  2. 它说&#34;用户设置&#34;单击File按钮并添加settings.xml。

  3. 我认为这是针对您的项目的,但我的目标是&#34;目标&#34;设置为&#34; clean install&#34;我检查了#34; Skip Tests。&#34;

答案 24 :(得分:0)

我在eclipse中遇到了这个问题,mvn -U clean install没有用,但是右键单击项目并选择Maven-&gt; Update Project修复了它。

答案 25 :(得分:-4)

我通过更改maven setting.xml和存储库

解决了这个问题