我希望有人可以帮助我解决我正在努力解决的问题 .
当我尝试从终端构建我的项目时,我收到此错误:
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不会报告任何错误 .
有人可以告诉我这里缺少什么或做错了吗?
23 回答
我有一个项目
现在我们的组织中还有另一个项目
(每个模块a1,b1等和父项目A,B都有自己的pom.xml,根据父母和孩子的标准maven规则)
这两个项目都在我的本地日食(来自SVN)上检出 . 我正在积极研究A.
我开始知道在B中开发了一个很好的通用功能(b4),我需要使用它 .
b4的开发人员已将此b4模块部署为我们组织的存储库中的工件 . 我将依赖性包含在我的模块的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”,这是有效的 . a2模块成功编译,安装(稍后打包) .
重要的一点是,如果b4在您的工作区中,不仅要安装b4 . 您将需要清理安装完整的B.我在阅读 Zuill 的答案后找到了这个解决方案
EDIT: One more thing here to note that if I didn't had B project checked out in Local environment then this issue might not have occurred for me. I tend to think that this happened cause I had B checked out in my local workspace.
对我来说,似乎实际上是依赖POM的一个问题 .
我通过使用jitpack虚拟存储库解决了这个问题,你可以使用它来包含基于URL的github存储库而不是它们自己的POM(在我的情况下似乎是错误的) .
我通过更改maven setting.xml和存储库来解决了这个问题
我在eclipse中遇到了这个问题,
mvn -U clean install
没有用,但右击项目并选择Maven-> Update Project修复了它 .你提到了两个不同的groupIds,
com.morrislgn.merchandising.common
和com.johnlewis.jec.webpim.common
. 也许这就是问题所在 .我使用IntelliJ遇到了同样的问题 . 右键单击pom.xml> Maven> Reimport解决了这个问题
如果您使用的是Eclipse, Right Click on your Project - > Maven - > Update Project . 它将打开Update Maven Project对话框 .
在该对话框中,选中 Force Update of Snapshots/Releases 复选框并单击 OK . (请参考下图)
这对我有用!
我知道我的谈话已经很晚了,但我也遇到了这个问题 . 我认为这个问题是我公司的防火墙 . 我的解决方案是拔掉网络连接,连接到我们的开放无线,然后通过Eclipse强制更新 . 这解决了一切 .
我通过删除存储库文件夹中的问题来解决此问题,其中显示除.jar和.pom文件之外的所有内容 .
对我来说,它与在里面设置“User Setting.xml”有关
我有一段时间的同样的问题,尽管做了
mvn -U clean install
问题没有得到解决!我终于通过删除整个
.m2
文件夹解决了问题,然后重新启动了我的IDE,问题就消失了!因此,有时问题会因为本地maven存储库中的某些不兼容性或问题而上升 .
这个错误基本上是说maven无法正确下载 . 因此,请转到您的maven本地存储库并确保没有任何 .lastUpdated 扩展名文件 .
参考Maven error "Failure to transfer..."
如果您正在使用eclipse, right click on project -> properties -> Maven 并确保未单击“ Resolve dependencies from workspace projects ” .
希望这可以帮助 .
我刚开始使用STS Eclipse,第一次使用Maven . 我设置的项目已经有了自己的settings.xml . 如果是这种情况,您将需要在运行配置中更新settings.xml文件 .
右键单击pom.xml并“运行方式” - >“运行”配置...”
其中显示“用户设置”,单击“文件”按钮并添加settings.xml .
我认为这是特定于您的项目,但我的“目标”设置为“清理安装”,我检查了“跳过测试” .
“无法读取工件描述符”问题通常表明maven存储库中依赖项的pom文件存在问题 . 我建议你仔细检查pom文件的名称是否与maven所期望的名称相同,并检查pom文件内容是否有效 .
如果您有一些子项目引用父pom而您尚未从父pom目录安装(从父目录运行
mvn install
),则可能会出现此问题 . 其中一个子项目可能依赖于兄弟项目,当它读取兄弟的pom时,除非您从父pom目录至少安装一次,否则它将因问题中提到的错误而失败 .我在将项目移动到新计算机时遇到了这个问题 . 我习惯于从子项目运行命令,并且没有在父项上运行安装 .
没有任何运气通过eclipse更新 . 不得不使用mvn clean install -U(解决了所有问题) .
你可以随时试试
mvn -U clean install
-U
强制检查远程存储库上的更新版本和快照在我们的例子中,由于不正确的groupId重命名而出现错误,而多模块Maven配置中的某些项目引用了其他项目 .
我们有一个聚合器项目(
billing-parent
),有两个模块(billing-api
,billing
):项目
billing
取决于billing-api
. 所以它的pom.xml
它有:我们决定将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:同样在
dependency
中重命名groupId
.解决方案2:将
${project.groupId}
替换为${project.groupId}
属性,如下所示:Conclusion. 所以,如果您在多模块配置中遇到错误,我的建议应该是:彻底检查相邻模块的依赖项
groupId
和artifactId
.我在eclipse中遇到了同样的问题,maven构建命令行工作得很好但是试试这个
进入.m2 / repository并擦除相关目录
在eclipse中运行更新maven依赖项
错误消失....为什么我的mvn命令行使用那些目录和eclipse .m2eclipse不能,我不知道它有点糟透了 . 我的项目现在再次在eclipse中工作 .
我有类似的问题 . 就我而言,我的.m2 / repositories文件夹中的testng版本已损坏,但当我删除它并再次进行maven更新时,一切正常 .
与IntelliJ IDEA相同的问题和后续工作 .
转到
File
选择
Settings
选择
Build, Execution, Deployments
从下拉列表中选择
Build Tools
从下拉列表中选择
Maven
勾选
Always update snapshots
复选框