Релиз 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 ответ, поэтому я должен написать новый ответ.