我希望有人可以帮助我解决我正在努力解决的问题。
当我尝试从终端构建我的项目时,我收到此错误:
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 时也不会报告任何错误。
有人可以告诉我我在这里缺少什么或做错了吗?
maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories:
,请参考:stackoverflow.com/q/67001968/6346531
您可以随时尝试mvn -U clean install
-U
强制检查远程存储库上的更新版本和快照。
如果您有一些引用父 pom 的子项目并且您没有从父 pom 目录安装(从父目录运行 mvn install
),则可能会出现此问题。其中一个子项目可能依赖于兄弟项目,并且当它读取兄弟项目的 pom 时,它将失败并出现问题中提到的错误,除非您至少从父 pom 目录安装了一次。
将项目移动到新计算机时,我刚刚遇到了这个问题。我习惯于从子项目运行命令并且没有在父项目上运行安装。
mvn install
时,您还可以添加 -N
以进行非递归操作。这将导致 maven 跳过所有模块(包括失败的模块)并为父级执行 install
目标。
mvn install
这不是仅用于下载兄弟依赖项吗?如果你碰巧去了兄弟目录 &从那里运行 mvn install
以使 jar 位于您的本地存储库中,这不是完成同样的事情吗?
与 IntelliJ IDEA 有同样的问题,以下工作。
转到文件
选择设置
选择构建、执行、部署
从下拉列表中选择构建工具
从下拉列表中选择 Maven
勾选始终更新快照复选框
https://i.stack.imgur.com/NVfCJ.jpg
如果您使用的是 Eclipse,请右键单击您的项目 -> Maven -> 更新项目。它将打开更新 Maven 项目对话框。
在该对话框中,选中强制更新快照/发布复选框并单击确定。 (请参考下图)
https://i.stack.imgur.com/gupF2.png
这对我有用!
如果您使用的是 Eclipse:
右键单击项目>属性> Maven
确保未单击从工作区项目中解决依赖关系。
我知道我的谈话很晚了,但我也遇到了这个问题。我认为问题是我公司的防火墙。我的解决方案是从网络中拔出,连接到我们开放的无线网络,然后通过 Eclipse 强制更新。这解决了一切。
我在 Eclipse 中遇到了同样的问题,其中 Maven 构建命令行工作得很好,但是试试这个
进入 .m2/repository 并擦除相关的目录
在 Eclipse 中运行更新 Maven 依赖项
错误消失了....为什么我的 mvn 命令行与这些目录一起工作而 eclipse .m2eclipse 不能,我不知道,这有点糟糕。我的项目现在再次在 Eclipse 中工作。
mvn clean install
工作
我在使用 IntelliJ 时遇到了同样的问题。我通过右键单击 pom.xml > Maven > Reimport 解决了
我通过在存储库文件夹中删除显示此错误的所有内容来解决此问题,但 .jar 和 .pom 文件除外。
对我来说,这与在里面设置“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 存储库中依赖项的 pom 文件存在问题。我建议您仔细检查 pom 文件的名称是否与 maven 期望的名称相同,并检查 pom 文件内容是否有效。
在项目文件夹中通过 shell 导航并运行以下命令:
mvn -U clean install
通常这应该已经解决了您的问题。
如果您看到这样的消息:
无法解析项目的依赖项: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 clean install
再次最终更新您的依赖项。
之后执行干净的 Maven 构建:
maven clean install
我有一个项目
A/
|--a1
|--a2
现在我们的组织中有另一个项目
B/
|--b1
|--b2
|--b3
(每个模块 a1、b1 等和父项目 A、B 都有自己的 pom.xml 根据标准 maven 的父子规则)
这两个项目都在我的本地 Eclipse(来自 SVN)上签出。我正在积极研究 A。
我开始知道在 B 中开发了一个很好的通用功能(b4),我需要使用它。
B/
|--b1
|--b2
|--b3
|--b4 (NEW)
b4 的开发人员已将此 b4 模块作为工件部署在我们组织的存储库中。我包含了对我模块的 POM 即 a2 的 pom.xml 的依赖关系。 Eclipse 从 repo 下载了 reuqired 工件,我可以导入其中的类。
现在问题开始了...出于某种目的,我需要检查 b4 的源代码,因为我已经在本地 Eclipse 上检查了 B,所以我从 SVN 更新了它并检查了模块 b4。我还运行了模块 b4 的 pom.xml,其目标包括 clean、package 等。一段时间后,当我完成编码后,我需要为我的模块 a2 创建一个 JAR。我在 a2 的 pom.xml 和 BAM 上运行了“包”!! a2 模块的错误 n 错误.. 这些错误也不是很用户友好。唯一的问题是日志中肯定有 b4 的名字。
解决方案:在尝试了许多解决方案数小时后,我在 B 的项目目录中(即在 ../codebase/B 中)从控制台运行了“mvn -U clean install”。由于 B 是父级,因此对包括 b4 在内的所有模块都运行了全新安装命令,并且运行成功。在此之后,我为我的父项目 A 运行了“mvn -U clean install”。这很有效! a2 模块已成功编译、安装(稍后打包)。
这里重要的一点是,如果 b4 在您的工作区中,请不要只安装 b4。您将需要全新安装完整的 B。我在阅读 Zuill 的回答后提出了这个解决方案
编辑:这里还有一件事要注意,如果我没有在本地环境中签出 B 项目,那么这个问题可能不会发生在我身上。我倾向于认为这是因为我在本地工作区签出了 B。
您提到了两个不同的 groupId,com.morrislgn.merchandising.common
和 com.johnlewis.jec.webpim.common
。也许这就是问题所在。
对我来说,这似乎实际上是依赖 POM 的问题。
我通过使用 jitpack 虚拟存储库来解决它,您可以使用它包含基于其 URL 而不是自己的 POM 的 github 存储库(在我的情况下这似乎是错误的)。
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
参考Maven error "Failure to transfer..."
find ~/.m2 -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;
没有任何运气通过 Eclipse 更新。不得不使用 mvn clean install -U (解决了所有问题)。
我有一段时间遇到同样的问题,尽管做了 mvn -U clean install
,但问题并没有得到解决!
我终于通过删除整个 .m2
文件夹解决了这个问题,然后重新启动了我的 IDE,问题就消失了!
所以有时问题会因为本地 maven 存储库中的一些不兼容或问题而上升。
在我们的例子中,出现错误是因为 groupId 重命名不正确,而多模块 Maven 配置中的一些项目引用了其他项目。
我们有一个包含两个模块(billing-api
、billing
)的聚合器项目 (billing-parent
):
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:同样在 dependency
中重命名 groupId
。
解决方案 2:将 groupId
替换为 ${project.groupId}
属性,如下所示:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>billing-api</artifactId>
<version>${project.version}</version>
</dependency>
结论。因此,如果您在多模块配置中遇到错误,我的建议是:彻底检查对相邻模块的依赖关系的 groupId
和 artifactId
。
我有一个类似的问题。就我而言,我的 .m2/repositories 文件夹中的 testng 版本已损坏,但是当我将其删除并再次进行 maven 更新时,一切正常。
这个错误基本上是说 maven 无法从本地存储库中读取某个依赖项。这可能是因为没有正确下载 jar 文件。因此,请转到您的 maven 本地存储库并确保没有任何 .lastUpdated 扩展文件。
我知道我很勇敢,九年后的问题...
对我来说,这是一个找不到子依赖的问题。通过查看包含 An internal error occurred during: "Building".
行的“错误日志”视图,我终于找到了真正的问题。双击它会显示一个带有堆栈跟踪的弹出窗口,最后一个原因最终在我的本地存储库中显示了一个损坏的 JAR。我清理了它,Eclipse/m2e 能够再次工作。
我在 Eclipse 中遇到了这个问题,mvn -U clean install
不起作用,但右键单击项目并选择 Maven->Update Project 修复了它。
我刚开始使用 STS Eclipse,第一次使用 Maven。我设置的项目已经有了自己的 settings.xml。如果是这种情况,您需要在运行配置中更新 settings.xml 文件。
右键单击 pom.xml 和“运行方式”->“运行配置...”,其中显示“用户设置”,单击“文件”按钮并添加 settings.xml。我认为这是特定于您的项目的,但我的“目标”设置为“全新安装”并且我检查了“跳过测试”。
这帮助了我:
来自 IDE(在我的例子中是 Red Hat CodeReady Studio)。
Windows -> 显示视图 -> 终端 -> 打开/添加本地终端
运行命令如下 >
$cd /pom-file-path/
$mvn -U clean install
~/.m2/setting.xml
镜像部分,然后在运行mvn -U clean install
后,确保添加Reimport
(右键单击项目,然后在底部Maven
部分下有一个Reimport
按钮)。