maven发布 - > peer未通过身份验证

Fin*_*005 17 java svn https release maven

我正在尝试释放我的软件(我之前从未这样做过),到目前为止我已经能够执行mvn release:prepare.当我正在执行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]

我在localhost:443设置了一个本地密码保护的svn存储库,所以我将以下内容添加到我的.m2文件夹中的settings.xml

编辑包括Edwin Buck的回答:

<?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>
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

如何让maven访问svn存储库?

好吧,正如Edwin Buck建议我不应该使用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访问这个repo.有谁知道我做错了什么?

rec*_*rec 64

从版本3.0.5开始,Maven会检查https连接上的SSL证书.您可以通过添加命令行参数来临时解决此问题

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
Run Code Online (Sandbox Code Playgroud)

将SSL证书安装到JRE中应该永久解决问题.

官方文件:http://maven.apache.org/wagon/wagon-providers/wagon-http/

  • Maven发布插件不会将系统属性传播到maven发布版本.因此,需要添加`<plugin> <groupId> org.apache.maven.plugins </ groupId> <artifactId> maven-release-plugin </ artifactId> <configuration> <arguments> -Dmaven.wagon.http.ssl. insecure = true -Dmaven.wagon.http.ssl.allowall = true </ arguments> </ configuration> </ plugin>`to ones settings.xml [see notatube.blogspot.nl](http://notatube.blogspot. NL/2010/10 /传球的属性对行家-release.html) (3认同)
  • 我们该如何安装 SSL 证书呢? (2认同)

Ale*_*nen 12

步骤1.将DER格式*.cer(/X.509 .cert)文件中的证书下载到本地目录

(您可以在浏览器中执行此操作;对于Chrome,请单击"锁定"符号,"显示Ceritficate" - >"复制到文件")

步骤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的路径作为环境变量

设置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


Edw*_*uck 3

您输入的settings.xml服务器 ID 为localhost,但您正在访问 ID 为 和 的存储byterendition-releasesbyterendition-snapshots

这意味着maven不会识别并将凭据与这两个服务器关联起来,因为它们具有不同的“身份”。您将需要byterendition-releases和的 settings.xml 条目byterendition-snapshots

现在,如果您添加了一个条目,例如

    <server>
        <id>byterendition-releases</id>
        <username>user</username>
        <password>password</password>
    </server>
Run Code Online (Sandbox Code Playgroud)

byterendition-releases然后,maven 将使用用户名user和密码来满足 https 身份验证质询password,因为它具有 的服务器凭证条目byterendition-releases

您还必须添加 的附加条目byterendition-snapshots,或将其设置为与 具有相同的服务器 ID byterendition-releases

--- 编辑以跟上更新的问题 ---

您正在通过 URL 访问您的存储库localhost。虽然如果您的存储库确实位于同一主机上,这可能会起作用,但有很多原因可能会导致它不起作用。

  1. SVN 存储库位于远程 SVN 服务器上,因此在远程服务器以外的其他地方进行开发时,这将会失败。
  2. HTTP 服务器未配置为解析 localhost 的方式与解析外部请求的方式完全相同。

不管怎样,放弃本地主机。如果您无法为机器获得稳定的 DNS 名称,甚至输入 IP 地址也是更好的选择。如果您的 SVN 服务器位于 DHCP 上,那么请投入时间让 DynamicDNS 正常工作(但实际上,如果可以的话,您应该为服务器获取静态 IP)。