为了账号安全,请及时绑定邮箱和手机立即绑定

如果失败,Maven 重试依赖项下载

如果失败,Maven 重试依赖项下载

慕村9548890 2022-10-26 15:48:42
在通过 maven 下载依赖项期间,其中一个由于网络问题而失败:Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-failsafe-plugin/2.16/maven-failsafe-plugin-2.16.pomPlugin org.apache.maven.plugins:maven-failsafe-plugin:2.16 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-failsafe-plugin:jar:2.16我想在可配置的n时间重试它。n我怎样才能做到这一点?
查看完整描述

4 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

我在 Gitlab CI/CD 中遇到了类似的问题。这似乎已经解决了这个问题:

-Dmaven.wagon.http.retryHandler.count=3

从 3.2 版开始,可以使用系统属性配置重试处理程序:

...


    • maven.wagon.http.retryHandler.count= 默认或标准实现的重试次数。

此处描述了其他 HTTP 客户端设置:https ://maven.apache.org/wagon/wagon-providers/wagon-http/

编辑:正如 keiki 在评论中指出的那样,3似乎是默认值,因此尚不清楚设置此值将如何帮助。请用您的经验发表评论。


查看完整回答
反对 回复 2022-10-26
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

由于保持活动连接被关闭,Maven 似乎在获取依赖项方面存在问题。当您mvn在构建环境(Docker、Azure、Jenkins)中运行并且构建相当长(> 5 分钟)时,会发生这种情况。

使用这个 maven 标志来禁用 HTTP 请求的 keep-alive 并查看它是否解决了您的问题:

-Dhttp.keepAlive=false

其他人也提到过使用这个标志:

-Dmaven.wagon.http.pool=false

例如

mvn -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false clean package

天蓝色的原始解决方案的来源


查看完整回答
反对 回复 2022-10-26
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

如果您在 NAT 后面的环境中运行,并且 NAT 超时很短,一种可能性是-Dmaven.wagon.httpconnectionManager.ttlSeconds=25在 maven 中设置而不是禁用 http 连接池。

这在 apache/pulsar 存储库中使用:

env:
  MAVEN_OPTS: -Dmaven.wagon.httpconnectionManager.ttlSeconds=25 -Dmaven.wagon.http.retryHandler.count=3

WAGON-545 的最后一条评论中,它说“Azure 用户应将 TTL 设置为 240 秒或更短。”


查看完整回答
反对 回复 2022-10-26
?
不负相思意

TA贡献1777条经验 获得超10个赞

让我建议一个替代解决方案:

在本地网络中设置 Nexus 或 Artifactory 服务器。让您的构建贯穿其中。它将缓存所有使用过的工件,从而大大降低遇到网络问题的风险。


查看完整回答
反对 回复 2022-10-26
  • 4 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信