Идея (через Gradle) «Не удалось разрешить:» зависимости от прокси-сервера Sonatype Nexus из mavenCentral () - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть размещенный репозиторий Sonatype Nexus в локальной сети.Он имеет группу Maven, содержащую прокси-репозиторий для публичного Maven репозитория.В прошлом эта конфигурация была превосходной, и я столкнулся с несколькими проблемами.

Недавно я настроил https и ssl в репозитории Nexus, поскольку Docker не мог легко войти в незащищенные реестры Nexus Docker во время процессов CI / CD.На этом этапе я переконфигурировал репозитории Maven.

Затем я обновил build.gradle:

repositories {
    maven {
        credentials {
            username "${nexusUsername}"
            password "${nexusPassword}"
        }

        name = 'RepositoryName'
        url = "https://${nexusURL}:${nexusPort}/repository/maven-public"
    }
}

с помощью переменных nexus*, определенных в ~/.gradle/gradle.properties:

nexus<Variable>=<value>

Я также добавил соответствующий сертификат в хранилище ключей java jre с помощью keytool, а добавил сертификат в настройках Idea (File > Settings... : Tools > Server Certificates).

При попыткезагрузить зависимости (через прокси-сервер Maven) с помощью Gradle (щелкнув «импортировать изменения» во всплывающем уведомлении в Intellij Idea), вывод Build показывает «Не удалось разрешить: » для каждой зависимости.Такое поведение одинаково во всех моих проектах (даже в тех, которые ранее могли разрешать зависимости).

В большинстве случаев я смог получить зависимости для разрешения через Nexus при выполнении задачи Gradle (:dependencies, :idea, :build) из файла проекта build.gradle из командной строки.Полученные в результате загрузки недоступны для проекта в Idea.Однако после того, как зависимости были разрешены один раз, артефакты кэшируются в репозитории Nexus Maven proxy, что позволяет Gradle / Idea правильно разрешать все зависимости.

Что может быть причиной неспособности Gradle / Idea разрешить артефакты с помощьюПрокси Нексуса в Maven?Есть ли способ заставить Gradle / Idea правильно разрешить зависимости через группу / прокси Nexus Maven?

На данный момент я только что добавил mavenCentral() в список репозитариев в build.gradle, но япредпочел бы включить в будущем только группу Nexus Maven.Кэширование ресурсов для загрузки 1Гб / с действительно приятно.Я также хотел бы лучше понять Gradle / Idea и причины этой проблемы.

Дополнительная информация:

  • Intellij Idea была переустановлена ​​ до версии 2018.2.6 Build #IC-182.5107.16 во время попытки решить эту проблему.Старая версия теряется в истории.
  • Gradle обновлен до версии 4.10.2.Предыдущая версия была 4.5.1.
  • Я напечатал каждую из nexus* переменных через println, чтобы убедиться, что значения верны.
  • Нет конфигурации настроек Idea для Gradle (локальноРаспределение Gradle, оболочка Gradle по умолчанию, конфигурация задачи Gradle 'wrapper') удалось разрешить зависимости.
  • Каждая конфигурация удаления хотя бы одного из ./.idea, ./.gradle и ~/.gradle/caches было опробовано.
  • Идея не в офлайн-режиме .Последовательности переключения в автономном режиме и «Обновить все проекты Gradle» не изменили результат.
  • Я запустил конфигурацию Idea задачи dependencies Gradle с --warning-mode all --debug и сравнил журнал с выводом gradle dependencies --warning-mode all --debug в командной строке.Журналы, кажется, производят одни и те же операторы (в совершенно разных порядках) до тех пор, пока в выходных данных Idea не появится сообщение «Не удалось разрешить:».Я не нашел соседних сообщений об ошибках, которые объяснили бы сбой.Если это поможет диагностировать проблему, я могу загрузить эти файлы.
  • Я попытался настроить хранилище так, чтобы оно указывало прямо на прокси-сервер Nexus Maven вместо группы Maven.Это не позволило Gradle / Idea разрешить зависимости.
  • Должен ли я использовать http / https proxy для Gradle?Я не понимаю цели использования прокси в этом контексте.
  • Я не ничего сделал с Grail .Я не знаю, что такое Grail, и подозреваю, что он мне сейчас не нужен.
  • ОС - это Windows 10.
  • Зависимости не разрешаются при использовании compile или implementation в build.gradle.
  • Переходные зависимости не кажутся актуальными.

1 Ответ

0 голосов
/ 08 января 2019

Я не должен добавить сертификат к правильной установке jre. Я добавил его совсем недавно, и проблема была решена.

Кроме того, суеверные заметки для тех, у кого есть похожая проблема:

  • Я добавил сертификат (подстановочный сертификат) под псевдонимом (используя параметр командной строки -alias для keytool): *.example.com
  • Я также добавил его под псевдонимом для полного адреса: nexus.example.com

Я не знаю, оказало ли какое-либо из них какое-либо влияние на успех Idea / Gradles в разрешении артефактов. Я считаю, что это работало до того, как я добавил второй псевдоним.

...