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

时间:2019-04-29 07:54:30

标签: java maven

在通过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

我想在n可以配置的n时间内重试它。我该怎么办?

4 个答案:

答案 0 :(得分:0)

让我提出一个替代解决方案:

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

答案 1 :(得分:0)

我在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/

答案 2 :(得分:0)

如果您在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

last comment of WAGON-545中,它说:“ Azure用户应将TTL设置为240秒或更短。”

答案 3 :(得分:-1)

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

使用此maven标志为HTTP请求禁用保持活动状态,并查看它是否可以解决您的问题:

-Dhttp.keepAlive=false

其他人也提到使用此标志:

-Dmaven.wagon.http.pool=false

例如

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

Source of the original solution for azure