Maven безопасный HTTPS-репозиторий и JDK5 - PullRequest
0 голосов
/ 29 января 2020

С января 2020 года maven переключил свое репо с HTTP на HTTPS. Для того, чтобы мой проект (работающий с Java 5 + maven 3.1.1) загрузил репозитории, которые я изменил в моем pom. xml репозитории, чтобы посмотреть: https://repo.maven.apache.org/maven2 Это работало нормально, и теперь maven пытается получить доступ к зависимостям из безопасного хранилища. Пытаясь построить / очистить мой проект, я столкнулся со следующими проблемами:

Проблема 1 Пытаясь очистить мой проект без каких-либо дополнительных аргументов, я получаю следующую ошибку: Не удалось передать артефакт орг. apache .maven.plugins: maven-clean-plugin: pom: 2.5 от / к центральному (https://repo.maven.apache.org/maven2): узел не аутентифицирован -> [Помощь 1]

Я попытался обойти ошибку, добавив следующие аргументы: mvn -Dmaven.wagon.http.ssl.insecure = true -Dmaven.wagon.http.ssl.allowall = true clean

Новая ошибка: Невозможно передать артефакт орг. apache .maven.plugins: maven-clean-plugin: pom: 2.5 от / к центральному (https://repo.maven.apache.org/maven2): удаленное соединение закрыло соединение во время рукопожатие: SSL-одноранговый узел некорректно завершил работу -> [Справка 1]

Дальнейшая попытка путем добавления следующего аргумента: -Dhttps.protocols = TLSv1.2, TLSv1.1 Resolves на новую ошибку:

Невозможно передать артефакт орг. apache .maven.plugins: maven-clean-plugin: pom: 2.5 from / to ce ntral (https://repo.maven.apache.org/maven2): TLSv1.2 -> [Help 1]

Issue 2 Я пытался использовать другой подход с использованием сертификата предоставлено из https://repo.maven.apache.org/maven2/ Я импортирую сертификат в хранилище доверенных сертификатов и попытался использовать его с помощью следующей команды maven:

mvn -Djavax. net .ssl.trustStore = C: \ PortableApps \ trust.jks -Djavax. net .ssl.trustStorePassword = pass -Djavax. net .ssl.keyStore = C: \ PortableApps \ trust.jks -Djavax. net .ssl.keyStoreType = jks -Djavax. net .ssl.keyStorePassword = pass clean

Ошибка такая же, как предыдущая снова Не удалось передать артефакт орг. apache .maven .plugins: maven-clean-plugin: pom: 2.5 от / к центральному (https://repo.maven.apache.org/maven2): узел не аутентифицирован -> [Помощь 1]

Я начинаю верить , что это не годится для работы с Java 5 из-за ограничений JVM. В качестве последнего решения я нахожу использование небезопасного репо http://insecure.repo1.maven.org/maven2/, но я хочу go сделать это как мой последний вариант. Любые дальнейшие предложения?

Примечание

  • В другом проекте с Java 7 я смог решить все проблемы, используя последнюю версию Maven 3.6 .3
  • Поскольку проект совместим только с Java 5, я ограничен в использовании maven версии до 3.1.1

1 Ответ

0 голосов
/ 29 января 2020

Я использовал небезопасное maven репо http://insecure.repo1.maven.org/maven2/, чтобы заставить его работать с Java 5 (сборка / запуск).

В качестве альтернативы, как уже предлагалось в комментариях, вы можете использовать JDK 7 для процесса сборки, чтобы загрузить зависимости из безопасного хранилища maven, и Java 5 для запуска вашего приложения.

Как представляется, нет доступа к защищенному репозиторию Maven при использовании Java 5 из-за отсутствия поддержки TLSv1.2, которую, похоже, использует maven (https://central.sonatype.org/articles/2018/May/04/discontinued-support-for-tlsv11-and-below/?__hstc=31049440.13cc707ef0d169390d4d7ac8ba12c78e.1571910247825.1579506965027.1580304556973.4&__hssc=31049440.1.1580304556973&__hsfp=1122763312 )

...