ОБНОВЛЕНИЕ 8/6:
Расширенное ведение журнала показало мне, что существует проблема с удалением старой банки из кеша, что приводит к фатальной ошибке «не найдено». Есть и другие темы, похожие на эту, но только когда кто-то блокирует файл в своей IDE. Мы запускаем один groovy-скрипт от Jenkins, и никто не заходит в этот ящик.
Мы запустили process explorer сразу после сбоя и блокировок не было. Затем я вхожу в систему с пользователем, которого Дженкинс использует для запуска сценария, и я не получаю ошибок при удалении файлов.
Также кажется, что в IVY 2.1 было исправлено, чтобы не сбой, когда jar не может быть удален, и я использую Ivy 2.2 (Groovy 1.8.4). Что дает?
Couldn't delete outdated artifact from cache: C:\Users\myUser\.groovy\grapes\com.a.b.c\x-y-z\jars\x-y-z-1.496.jar
затем ложная (?) ошибка:
Caught: java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: Error grabbing Grapes -- [unresolved dependency: com.a.b.c#x-y-z;1.+: not found]
at smokeTestSuccess.<clinit>(smokeTestSuccess.groovy)
Интересно, что это происходит каждый день при первом запуске скрипта после 5 утра. Я предполагаю, что кеш становится недействительным из-за какой-то конфигурации по умолчанию в 5 утра? Это какая-то подсказка??
Исходное сообщение:
Периодически я получаю сообщение об ошибке при запуске нескольких разных сценариев Groovy, которые используют одно и то же объявление @Grab. (имена файлов изменены для защиты невиновных). Сначала полное объявление Grab:
@GrabResolver(name = 'libs.release', root = 'http://myserver:8081/artifactory/libs-release', m2compatible = 'true') @Grapes([
@Grab(group = 'com.a.b.c, module = 'x-y-z', version = '1.+', changing = true),
@Grab('commons-lang:commons-lang:2.3'),
@Grab('log4j:log4j:1.2.16'),
@Grab('gpars:gpars:0.12'),
@Grab('jsr166y:jsr166y:1.7.0'),
@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.6'),
@Grab('org.apache.commons:commons-collections:3.2.1'),
@Grab('org.apache.httpcomponents:httpclient:4.2.2'),
@Grab('org.apache.httpcomponents:httpcore:4.2.3'),
@Grab('org.cyberneko.html:nekohtml:1.9.17'),
@Grab('xerces:xercesImpl:2.11.0'),
]) @GrabConfig(systemClassLoader = true)
Затем ошибка:
Caught: java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: Error grabbing Grapes -- [unresolved dependency: com.a.b.c#x-y-z;1.+: not found]
При выполнении многочисленных поисков в Интернете причина всегда кажется очень простой, любой из этих двух основных проблем: 1. Репозиторий недоступен 2. Файл JAR не существует.
Однако в журналах артефактов я доказал, что файл действительно загружается:
* Artifactory приняла запрос на загрузку: 2014-07-17 07:58:19,938 [ПРИНЯТО ЗАГРУЗИТЬ] libs-release-local:com/a/b/c/xyz/1.477/xyz-1.477.jar для анонимного пользователя/165.226 .40.155.
* Artifactory поставил jar: 20140717075820|156|REQUEST|165.226.40.155|non_authenticated_user|GET|/libs-release/com/a/b/c/x-y-z/1.477/x-y-z-1.477.jar|HTTP/1.1|200|1276695
Все скрипты работают примерно в 100% случаев, если их просто перезапустить. Все это наводит меня на мысль, что проблема в таймауте Grab. Теоретически, когда я запускаю скрипт во второй раз, файл находится в кеше, и все происходит быстрее, поэтому он не падает.
Для приведенного выше реального запроса я вижу около 20 секунд прошедшего времени в журнале http от запроса до загрузки.
Вопросы:
Моя теория кажется правильной?
Есть ли способ увеличить время, в течение которого скрипт будет ждать разрешения @Grab?
Помещение блока try/catch вокруг операторов @Grab кажется хорошей идеей? Или это просто скроет настоящую проблему?
заранее спасибо!!!!
@Grab(group='org.apache.commons', module='commons-collections4', version='4.2')
. Я не мог запустить его из-за ошибки Ошибка захвата Grapes -- [неразрешенная зависимость: org.apache.commons#commons-collections4;4.2: не найдено] Используя-Divy.message.logger.level=4
, я обнаружил следующую проблему:Server access error at url https://repo1.maven.org/maven2/org/apache/commons/commons-collections4/4.2/commons-collections4-4.2.pom (javax.net.ssl.SSLException: Received fatal alert: protocol_version)
Мое решение заключалось в использовании JDK 8, а не JDK7 - person razvang   schedule 07.09.2018