У меня есть размещенный репозиторий 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
. - Переходные зависимости не кажутся актуальными.