当访问Travis CI上的mvnsearch.org时,如何避免“作业超过了作业的最大时间限制,并且已经终止。”

问题描述 投票:19回答:2

大约72小时我在TravisCI上获得The job exceeded the maximum time limit for jobs, and has been terminated.,这似乎与mvnsearch.org请求工件有关,例如https://travis-ci.org/document-scanner/document-scanner-aggregator/builds/266942578。我假设它是一个我没有使用的远程存储库,但是项目的某些依赖项是。

mavensearch.org似乎无法访问或响应非常缓慢。我没有找到有关其运营状况的任何消息。奇怪的是,问题在72小时内没有得到修复,所以我假设一个长期问题。

我能想象的唯一可能的解决方案是将Maven代理的下载和安装添加到Maven settings.xml文件中的Travis CI构建脚本和代理mavensearch.org。有什么方法可以避免这种情况吗?

mirror中使用~/.m2/settings.xml元素是行不通的,因为它引用了引用的POM中的存储库id,它可以是传递依赖项,并且如果使用了快照并且需要在每次版本更改后进行检查并最终调整,则可以更改。

java maven travis-ci connectivity
2个回答
7
投票

可能会采取以下几种行动:

  1. Common Build Problems: My builds are timing out - Travis CI答案提供了几种解决方案。其中之一是«to extend the wait time» for the Maven process
  2. 启用Maven依赖项的缓存:Caching Dependencies and Directories: Caching directories (Bundler, dependencies): Arbitrary directories - Travis CI
  3. 使用存储库管理器:«act as dedicated proxy server for public Maven repositories»。 其他参考: Nexus示例: Maven Repositories - Nexus Repository Manager 3 - Sonatype Help。请参阅«浏览和搜索Maven存储库»(一般信息)和«配置Apache Maven»(settings.xml相关信息)部分。 用户手册的“用户手册”:Using Nexus 3 as Your Repository – Part 1: Maven Artifacts | TheNEXUS。 一般问题:How does one mirror a maven repository?

3
投票

通过添加在Travis CI上启用缓存

cache:
  directories:
  - $HOME/.m2

事实证明.travis.yml根本不是解决方案,也不仅仅是一个临时解决方案(上周大约40个版本;因为mvnsearch.org再次出现或者其他原因很难弄清楚),我发现以下更有希望解决方案(这比设置可用作镜像的Nexus存储库管理器实例更容易):

- echo -e '<?xml version="1.0" encoding="UTF-8"?>\n<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"\n    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n  <mirrors>\n    <mirror>\n      <id>mvnsearch-unavailable</id>\n      <name>mvnsearch-unavailable</name>\n      <mirrorOf>mvnsearch</mirrorOf>\n      <url>http://repo1.maven.org/maven2</url>\n    </mirror>\n  </mirrors>\n  <profiles>\n    <profile>\n      <id>no-mvnsearch</id>\n      <repositories>\n        <repository>\n          <id>mvnsearch</id>\n          <url>http://www.mvnsearch.org/maven2</url>\n          <releases>\n            <enabled>true</enabled>\n          </releases>\n          <snapshots>\n            <enabled>true</enabled>\n          </snapshots>\n        </repository>\n      </repositories>\n    </profile>\n  </profiles>\n  <activeProfiles>\n    <activeProfile>no-mvnsearch</activeProfile>\n  </activeProfiles>\n</settings>' > $HOME/.m2/settings.xml
- cat $HOME/.m2/settings.xml

.travis.yml将覆盖http://www.mvnsearch.org/maven2在任何难以控制的传递依赖中的使用,并使用Maven中央存储库http://repo1.maven.org/maven2,它涵盖了我的案例中的所有依赖项(在其他情况下可能不会)。

请注意,Murphy定律适用于任何事情:Maven 3.1.1忽略此设置,即使它声称在其调试输出中使用镜像(哎哟!)。

现在,构建速度比临时工作缓存解决方案快7分钟。

© www.soinside.com 2019 - 2024. All rights reserved.