Команда Grails clean выдает ошибку в контейнере Ubuntu docker

# #docker #ubuntu #grails #gitlab

Вопрос:

Я пытаюсь запустить команду Grails-clean на компьютере Ubuntu, работающем в контейнере Docker, но получаю следующую ошибку:

 $ grails clean

| Loading Grails 2.4.0
| Configuring classpath
| Error Resolve error obtaining dependencies: Failed to read artifact descriptor for xalan:serializer:jar:2.7.1 (Use --stacktrace to see the full trace)
| Error Required Grails build dependencies were not found. This is normally due to internet connectivity issues (such as a misconfigured proxy) or missing repositories in grails-app/conf/BuildConfig.groovy. Please verify your configuration to continue.
 

Из-за этой проблемы я не могу продолжить развертывание файла войны с использованием grails. Я проверил «BuildConfig.groovy» и добавил некоторые репозитории, а также упомянул их на различных порталах, но безуспешно. Снова и снова повторяется одна и та же ошибка.

Любая помощь будет высоко оценена.

Спасибо, Акшат

Комментарии:

1. Вы использовали —stacktrace, чтобы увидеть полную трассировку? Вы проверили правильность настроек вашего прокси-сервера? Пожалуйста, также опубликуйте раздел «репозитории» в BuildConfig.groovy, если вы сделали это.

2. Привет, Дэниел, спасибо за твой ответ. Не могли бы вы, пожалуйста, сообщить мне, как проверить —stacktrace в контейнере docker? Кроме того, пожалуйста, подскажите, как проверить настройки прокси-сервера системы Ubuntu, работающей внутри контейнера?

3. Запустите grails clean --stacktrace , чтобы увидеть полный вывод. (Вы также можете использовать —многословно; я не помню, покажет ли это вам что-нибудь более полезное.) Что касается настроек прокси-сервера: можете ли вы загрузить другие зависимости?

4. Привет, Дэниел, спасибо за твой ответ. Конечно, я проверю вывод stacktrace. Что касается настроек прокси-сервера, что именно вы подразумеваете под загрузкой других зависимостей? Пожалуйста, предложите!

5. Либо у вас есть зависимость, которую grails не может найти, либо ваше приложение grails не может взаимодействовать с Интернетом. Если вы можете получить некоторые зависимости, но только не эту конкретную, это проблема с этой конкретной зависимостью. Если вы ничего не можете получить, это почти наверняка проблема с сетью. Существует множество способов настройки прокси-серверов, и добавление docker в этот набор просто дает вам еще один способ выяснить, но шаг 1 заключается в определении того, является ли это вообще проблемой. Трассировка стека должна помочь.

Ответ №1:

Попробуйте использовать https вместо простого http.

     mavenRepo "https://repo.grails.org/grails/core"
    mavenRepo "https://repo.grails.org/grails/plugins"
 

Также попробуйте работать с Java 8 поверх Java 7 из-за того, что Java 8 по умолчанию использует TLS 1.2.

Комментарии:

1. Привет, Джо, я использую https только в файле BuildConfig.groovy для определения репозиториев maven. Не могли бы вы, пожалуйста, подсказать мне, что еще я могу проверить ?

2. Попробуйте получить оболочку bash в контейнере Docker и посмотрите, сможете ли вы выполнить команду curl для мест за пределами контейнера. docker exec -это <контейнер> bash

3. Спасибо за твой ответ, Джо. На самом деле я запускаю его в конвейере Gitlab, поэтому я думаю, что не буду знать идентификатор контейнера, чтобы определить его в команде docker «exec» в задании конвейера. Пожалуйста, предложите!

4. Попробуйте выполнить сборку непосредственно на сервере Gitlab pipleline и посмотрите, сработает ли это в первую очередь.

5. Можете ли вы очистить его на своей собственной машине? Удалите свой кэш maven, если вы создаете его на своей собственной машине. C:Usersyouruserid.m2