Безопасный репозиторий Maven HTTPS и JDK5

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

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

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

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

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

Не удалось передать артефакт org.apache.maven.plugins:maven-clean-plugin:pom:2.5 из/в хранилище (https://repo.maven.apache.org/maven2): TLSv1.2 -> [Справка 1]

Проблема 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=пройти очистку

Ошибка такая же, как и предыдущая, снова Не удалось передать артефакт org.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/, но я хочу сделать это как самый последний вариант. Любые дополнительные предложения?

Примечание

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

person Stephan    schedule 29.01.2020    source источник
comment
Вы можете использовать набор инструментов для компиляции и тестирования вашего проекта с JDK 5, тогда как Maven работает с JDK 7.... maven.apache.org/guides/mini/guide-using-toolchains.html   -  person khmarbaise    schedule 29.01.2020
comment
это предлагается в качестве решения, поскольку то, что я пытаюсь сделать, не будет работать с jdk5, или это просто обходной путь? Спасибо за ваш ответ   -  person Stephan    schedule 29.01.2020
comment
Попробуйте использовать прокси: maven.apache.org/guides/mini/guide-proxy. .html , прокси-сервер должен предоставлять обычный http для вашего клиента maven, но будет подключаться к репозиторию https maven, поскольку проблема в устаревшем клиенте - должно помочь.   -  person Alex Chernyshev    schedule 29.01.2020
comment
Другим решением было бы использование менеджера репозитория, такого как Nexus... Это настройка, которую я настоятельно рекомендую для запуска Maven и т. д. в корпоративной среде, которая будет обрабатывать часть https... также я бы рекомендовал также обновить вашу версию Maven. вы можете изменить конфигурацию своего проекта и построить с помощью JDK7+ и определить target to JDK 5 ..? и я настоятельно рекомендую использовать соединение https.....   -  person khmarbaise    schedule 29.01.2020
comment
Алексей Чернышев, я не могу пойти с этим вариантом, так как в этом случае мне нужно будет заставить других, которые компилируют приложение на разных средах, создать прокси только для этого случая.   -  person Stephan    schedule 29.01.2020
comment
khmarbaise, я рассмотрю ваше первое предложение, а также о Нексусе. Как я уже сказал, я не могу подняться выше версии maven 3.1.1 из-за несовместимости с Java 5. Сборка с JDK7, к сожалению, не вариант. Мы как бы обязаны поддерживать Java 5. Однако мой вопрос заключается в том, есть ли решение (без использования нексуса, прокси и т. д.) для этой проблемы или нет из-за Java 5. Мне это еще не ясно.   -  person Stephan    schedule 29.01.2020
comment
@Stephan Я не уверен, понятно ли вам это, поэтому позвольте мне добавить: вы можете создать приложение с JDK 1.7 для Java 5. Позже вы можете запустить его на JDK 1.5, даже если вы собираете его с помощью JDK 1.7.   -  person J Fabian Meier    schedule 29.01.2020
comment
@JF Meier, я знаю об этом. но, как я уже сказал в своем комментарии выше, я вынужден использовать только Java 5. Не больше по какой-либо причине (сборка/запуск). Я решил свою проблему с помощью небезопасного репо insecure.repo1.maven.org/maven2 , но все же мне интересно, есть ли способ использовать Java 5 и по-прежнему использовать https.   -  person Stephan    schedule 29.01.2020
comment
@Стефан, мне кажется странным, что тебя заставляют делать что-то подобное. Даже если это руководство или правило вашей компании/проекта, стоит поговорить с соответствующими людьми и попросить их изменить его.   -  person J Fabian Meier    schedule 29.01.2020
comment
Всем спасибо за помощь и ответы. Но мы выходим за рамки прямо сейчас :) . Я считаю, что вопрос довольно прост. Могут ли все эти предложения, которые я прочитал в Интернете для нового безопасного репозитория maven, работать с Java 5? Если да, то что мне не хватает? Давайте просто исключим факт существования Java 6 или 7.   -  person Stephan    schedule 29.01.2020
comment
Похоже, это не может работать с Java 5 из-за поддержки TLS.   -  person Stephan    schedule 29.01.2020


Ответы (1)


В итоге я использовал небезопасный репозиторий 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/май/04/прекращено-поддержка-на-tlsv11-и-ниже/__ВНТК=31049440.13cc707ef0d169390d4d7ac8ba12c78e.1571910247825.1579506965027.1580304556973.4&__ГСОС=31049440.1.1580304556973&__hsfp=1122763312)

person Stephan    schedule 29.01.2020