如何避免"工作超过了工作的最长期限,并且已经终止." 在Travis CI上访问mvnsearch.org时?

Kar*_*ter 22 java connectivity maven travis-ci

大约 72h我正在The job exceeded the maximum time limit for jobs, and has been terminated.使用TravisCI,它似乎与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,它可以是传递依赖的存储库ID,如果使用了快照并且需要在每次版本更改后进行检查并最终调整,则可以更改.

Ser*_*nov 9

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

  1. 常见的构建问题:我的版本是超时-特拉维斯CI答案提供了一些解决方案.其中之一是"延长Maven流程的等待时间".
  2. 启用Maven依赖项的缓存:缓存依赖项和目录:缓存目录(Bundler,依赖项):任意目录 - Travis CI.
  3. 使用存储库管理器:«充当公共Maven存储库的专用代理服务器».
    其他参考:
    1. Nexus示例:
    2. 一般问题:如何镜像maven存储库?.


Kar*_*ter 3

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

cache:
  directories:
  - $HOME/.m2
Run Code Online (Sandbox Code Playgroud)

事实.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
Run Code Online (Sandbox Code Playgroud)

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

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

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