我应该如何处理在Cloudbees Jenkins构建中下载Maven依赖项的问题?

时间:2015-08-06 21:19:20

标签: maven jenkins gradle cloudbees

我有一个我在Cloudbees Jenkins实例中构建的Java项目。构建过程使用Gradle并从Maven存储库获取其所有依赖项。在相当规律的基础上,构建过程在从Maven Central下载一个或多个依赖项时出现问题。最近,它是appengine SDK:

Download https://repo1.maven.org/maven2/com/google/appengine/appengine-java-sdk/1.9.23/appengine-java-sdk-1.9.23.pom

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration ':appengineSdk'.
> Could not determine artifacts for com.google.appengine:appengine-java-sdk:1.9.23
   > Could not get resource 'https://repo1.maven.org/maven2/com/google/appengine/appengine-java-sdk/1.9.23/appengine-java-sdk-1.9.23.zip'.
      > Could not HEAD 'https://repo1.maven.org/maven2/com/google/appengine/appengine-java-sdk/1.9.23/appengine-java-sdk-1.9.23.zip'.
         > The target server failed to respond

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

网址有效,只是有时repo1.maven.org或我路径中的某个代理似乎打嗝而下载失败。很多时候(虽然不总是,grrr ......)如果我进入并手动启动构建,下载问题就解决了,构建成功了。

在一个独立的Jenkins实例(不是Cloudbees)中,这不是什么大不了的事,因为我可以维护一个Gradle缓存,而且我只需要下载一次依赖项。由于我的Cloudbees环境通常会针对每个构建进行刷新(重新下载所有内容),因此构建在运行的大部分时间内都会失败。

我正在寻找有关在Cloudbees环境中处理此问题的最佳方法的建议。例如:

  • 我可以在Cloudbees环境中缓存部分或全部依赖项吗?
  • 我可以调用Gradle命令预先下载所有依赖项吗?
  • 我可以编写Gradle任务来下载依赖项并进行相应的重试吗?

我不介意编写自定义Gradle任务,如果需要的话,但我不确定从哪里开始。所以,如果这是答案,那么我们会非常感谢您对文档的指示,并且我会将最终实现作为替代答案发布。

1 个答案:

答案 0 :(得分:0)

尝试设置一个代理maven.org的私有repo实例?