在maven下载依赖的过程中,其中一个由于网络问题而失败:
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-failsafe-plugin/2.16/maven-failsafe-plugin-2.16.pom
Plugin 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
Run Code Online (Sandbox Code Playgroud)
我想n在n可配置的时候重试它。我怎样才能做到这一点?
我在 Gitlab CI/CD 中遇到了类似的问题。这似乎解决了这个问题:
-Dmaven.wagon.http.retryHandler.count=3
Run Code Online (Sandbox Code Playgroud)
从 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 请求的保持活动,看看它是否能解决你的问题:
-Dhttp.keepAlive=false
Run Code Online (Sandbox Code Playgroud)
其他人也提到使用这个标志:
-Dmaven.wagon.http.pool=false
Run Code Online (Sandbox Code Playgroud)
例如
mvn -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false clean package
Run Code Online (Sandbox Code Playgroud)
如果您在 NAT 后面的环境中运行,并且 NAT 超时很短,一种可能性是设置-Dmaven.wagon.httpconnectionManager.ttlSeconds=25( -Daether.connector.http.connectionMaxTtl=25Maven 3.9+),而不是在 Maven 中禁用 http 连接池。
这在 apache/pulsar 存储库中使用:
env:
MAVEN_OPTS: -Dmaven.wagon.httpconnectionManager.ttlSeconds=25 -Dmaven.wagon.http.retryHandler.count=3 -Daether.connector.http.connectionMaxTtl=25
Run Code Online (Sandbox Code Playgroud)
在WAGON-545 的最后一条评论中,它说“Azure 用户应将 TTL 设置为 240 秒或更短”。
| 归档时间: |
|
| 查看次数: |
3371 次 |
| 最近记录: |