大约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,它可以是传递依赖项,并且如果使用了快照并且需要在每次版本更改后进行检查并最终调整,则可以更改。
可能会采取以下几种行动:
settings.xml
相关信息)部分。
用户手册的“用户手册”:Using Nexus 3 as Your Repository – Part 1: Maven Artifacts | TheNEXUS。
一般问题:How does one mirror a maven repository?。通过添加在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分钟。