我希望有人可以帮我解决我正在努力解决的问题。
当我尝试从终端构建我的项目时,我收到此错误:
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不会报告任何错误。
有人可以告诉我这里缺少什么或做错了吗?
答案 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
复选框答案 3 :(得分:35)
如果您正在使用eclipse, 右键点击项目 - &gt;属性 - &gt;行家强> 并确保&#34; 解决工作区项目的依赖关系&#34;没有点击。
希望这会有所帮助。
答案 4 :(得分:27)
如果您使用的是Eclipse,右键单击您的项目 - &gt; Maven - &gt; 更新项目。它将打开“更新Maven项目”对话框。
在该对话框中,选中强制更新快照/版本复选框&amp;点击确定。 (请参考下图)
这对我有用!
答案 5 :(得分:21)
我知道我的谈话已经很晚了,但我也遇到了这个问题。我认为这个问题是我公司的防火墙。我的解决方案是拔掉网络连接,连接到我们的开放无线,然后通过Eclipse强制更新。这解决了一切。
答案 6 :(得分:11)
我在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.common
和com.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-api
,billing
):
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>
<强>结论强>
因此,如果您遇到多模块配置中的错误,我的建议应该是:彻底检查邻居模块的依赖关系的groupId
和artifactId
。
答案 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文件。
右键单击pom.xml和&#34; Run As&#34; - &GT; &#34;运行配置......&#34;
它说&#34;用户设置&#34;单击File按钮并添加settings.xml。
我认为这是针对您的项目的,但我的目标是&#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和存储库
解决了这个问题