Как избежать "Работа превысила максимальный срок для рабочих мест и была прекращена". при доступе к mvnsearch.org на 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 в сборку Travis CI script и proxy mavensearch.org в файле Maven settings.xml. Есть ли способ избежать этого?

Нельзя использовать элемент mirror в ~/.m2/settings.xml, потому что он ссылается на идентификатор репозитория в ссылочных POM, которые могут быть зависимыми от транзитивных зависимостей, и может измениться, если снимки используются и должны быть проверены и в конечном итоге скорректированы после изменения каждой версии.

Ответы

Ответ 1

Включение кэширования в Travis CI путем добавления

cache:
  directories:
  - $HOME/.m2

to .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

to .travis.yml, который переопределит использование http://www.mvnsearch.org/maven2 в любом жестком управлении транзитивной зависимостью и использует центральный репозиторий Maven http://repo1.maven.org/maven2, который охватывал все зависимости в моем случае (это может быть не в других случаях).

Обратите внимание, что закон Мерфи применим так же, как к чему-либо: Maven 3.1.1 игнорирует этот параметр, даже если он утверждает, что использует его в своем отладочном выходе (ouch!).

Теперь сборка на 7 минут быстрее, чем при использовании временного рабочего кэширования.

Ответ 2

Можно выполнить пару действий: