Релиз maven → peer not authenticated

Я немного экспериментирую с выпуском своего программного обеспечения (я этого никогда не делал раньше), и до сих пор мне удалось выполнить mvn release: подготовьте. Поскольку я выполняю выпуск: выполнить, я получаю следующую ошибку:

[INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plug
in:2.7:deploy (default-deploy) on project img2stl: Failed to deploy artifacts: C
ould not transfer artifact nl.byterendition:img2stl:jar:0.9 from/to byterenditio
n-releases (https://localhost:443/svn/repo/releases): peer not authenticated ->
[Help 1]

Я установил локальный защищенный паролем svn-репозиторий на localhost: 443, поэтому я добавил следующее в свой файл settings.xml в моей папке .m2

ИЗМЕНИЛСЯ ВКЛЮЧАЕТ Эдвина Бака:

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <servers>
        <server>
            <id>byterendition-releases</id>
            <username>username</username>
            <password>password</password>
        </server>
        <server>
            <id>byterendition-snapshots</id>
            <username>username</username>
            <password>password</password>
        </server>
    </servers>
</settings>

Это полезный раздел моего pom:

<distributionManagement>
    <repository>
        <id>byterendition-releases</id>
        <url>https://localhost:443/svn/repo/releases</url>
    </repository>
    <snapshotRepository>
        <id>byterendition-snapshots</id>
        <url>https://localhost:443/svn/repo/snapshots</url>
    </snapshotRepository>
</distributionManagement>

Как я могу получить maven для доступа к репозиторию svn?

Хорошо, как сказал Эдвин Бак, я не должен использовать localhost, но поскольку я не смог заставить его работать, я думал, что попробую это с помощью удаленного SVN-сервера, который я использую для работы. Теперь я получаю другую ошибку:

[INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plug
in:2.7:deploy (default-deploy) on project img2stl: Failed to deploy artifacts: C
ould not transfer artifact nl.byterendition:img2stl:jar:0.9.5 from/to byterendit
ion-releases (https://svn.science.ru.nl/repos/estens/releases/): Failed to trans
fer file: https://svn.science.ru.nl/repos/estens/releases/nl/byterendition/img2s
tl/0.9.5/img2stl-0.9.5.jar. Return code is: 409, ReasonPhrase: Conflict. -> [Hel
p 1]

Снова я могу получить доступ к этому репо из Eclipse. Кто-нибудь знает, что я делаю неправильно?

Ответ 1

Начиная с версии 3.0.5 Maven проверяет SSL-сертификат на соединениях https. Вы можете временно исправить это, добавив параметры командной строки

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

Установка SSL-сертификата в JRE должна постоянно исправлять проблему.

Официальная документация: http://maven.apache.org/wagon/wagon-providers/wagon-http/

Ответ 2

Шаг 1. Загрузите сертификат в формате DER *.cer(/X.509.cert) в локальный каталог

(Вы можете сделать это в своем браузере; Для Chrome Нажмите на символ Lock, Show Ceritficate → Copy to File)

Шаг 2. Импортируйте его в хранилище доверия Java

\ Program_Files\Java\jdk1.6.0_45\jre\lib\security > % JAVA_HOME%\jre\bin\keytool -v -alias mavensrv -import -file d:\temp\apacher.cer -keystore trust.jks

Шаг 3.. Укажите путь к maven как переменные среды.

set MAVEN_OPTS = -Xmx512m -Djavax.net.ssl.trustStore =% JAVA_HOME%/jre/lib/security/trust.jks -Djavax.net.ssl.trustStorePassword = changeit -Djavax.net.ssl.keyStore =% JAVA_HOME%/jre/lib/security/trust.jks -Djavax.net.ssl.keyStoreType = jks -Djavax.net.ssl.keyStorePassword = changeit

Ответ 3

https://github.com/escline/InstallCert предоставляет необходимые инструменты и предоставляет пошаговую инструкцию о том, как импортировать удаленный сертификат в общесистемное хранилище сертификатов.

Ответ 4

Ваша запись в settings.xml предназначена для идентификатора сервера localhost, но вы обращаетесь к репозиториям с id (s) byterendition-releases и byterendition-snapshots.

Это означает, что maven не будет переучитывать и связывать учетные данные с этими двумя серверами, поскольку они имеют разные "идентификаторы". Вам понадобятся записи settings.xml для byterendition-releases и byterendition-snapshots.

Теперь, если вы добавили запись типа

    <server>
        <id>byterendition-releases</id>
        <username>user</username>
        <password>password</password>
    </server>

Тогда maven выполнит вызов проверки подлинности https на byterendition-releases с именем пользователя user и паролем password, поскольку он имеет учетную запись сервера для byterendition-releases.

Вам также нужно добавить дополнительную запись для byterendition-snapshots или установить для нее тот же идентификатор сервера, что и byterendition-releases.

--- Отредактировано, чтобы не отставать от обновленного вопроса ---

Вы используете для своего репозитория URL localhost. Хотя это может сработать, если ваш репозиторий действительно находится на одной и той же машине, существует множество причин, по которым это может не сработать.

  • Репозиторий SVN находится на удаленном сервере SVN, поэтому это произойдет при разработке в другом месте, чем удаленный сервер.
  • HTTP-сервер не настроен для разрешения localhost точно так же, как он может разрешить внешний запрос.

В любом случае, канава localhost. Если вы не можете получить стабильное DNS-имя для машины, лучший выбор - даже размещение IP-адреса. Если ваш сервер SVN находится на DHCP, тогда потратьте время на то, чтобы заставить DynamicDNS работать (но на самом деле вы должны получить статический IP-адрес для сервера, если сможете).

Ответ 5

Я обнаружил, что версия Java может иметь значение здесь.

С Maven 3.0.5 я получал эту ошибку с Java 6, но переход на Java 7 (или новее) разрешил ее для меня.

Ответ 6

Похоже на проблему с SSL при подключении к серверу. Возможно, перед проверкой имени пользователя и пароля.

Вы настроили сервер svn с помощью SSL-клиента? Это означает, что вам нужно отправить клиентский сертификат на сервер.

Ответ 7

У меня было много проблем с безопасностью после обновления до OSX Mavericks

  • Проблема SSL с Amazon AWS
  • не аутентифицирован с помощью Maven и Eclipse
  • параметр trustAnchors должен быть непустым

Я применил это обновление JAVA и исправил все мои проблемы: http://support.apple.com/kb/DL1572?viewlocale=en_US

Ответ 8

Я использую maven 3.5.3, и я решил временно исправить эту проблему SSL, добавив параметры командной строки в соответствии с приведенными выше ответами. Но формат параметров немного изменился.

-D maven.wagon.http.ssl.insecure=true -D maven.wagon.http.ssl.allowall=true

Извините, я не могу комментировать @Alex Punnen ответ, поэтому я должен написать новый ответ.