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

在通过 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我怎样才能做到这一点?


慕村9548890
浏览 135回答 4
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似乎是默认值,因此尚不清楚设置此值将如何帮助。请用您的经验发表评论。

白猪掌柜的

由于保持活动连接被关闭,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天蓝色的原始解决方案的来源

明月笑刀无情

如果您在 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 秒或更短。”

不负相思意

让我建议一个替代解决方案:在本地网络中设置 Nexus 或 Artifactory 服务器。让您的构建贯穿其中。它将缓存所有使用过的工件,从而大大降低遇到网络问题的风险。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java