21

我正在尝试发布我的软件(我以前从未这样做过),到目前为止我已经能够执行 mvn release:prepare。当我执行 release:perform 时,我收到以下错误:

[信息] [错误] 无法执行目标 org.apache.maven.plugins:maven-deploy-plug
in:2.7:deploy (default-deploy) on project img2stl: 未能部署工件:C
不能将工件 nl.byterendition:img2stl:jar:0.9 从/到 byterenditio 传输
n-releases (https://localhost:443/svn/repo/releases): 对等体未通过身份验证->
[帮助1]

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

编辑包括埃德温巴克的回答:

<?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 存储库?

好的,正如 Edwin Buck 建议的那样,我不应该使用 localhost,但由于我无法让它工作,否则我想我会使用我用于工作的远程 SVN 服务器来尝试这个。现在我得到一个不同的错误:

[信息] [错误] 无法执行目标 org.apache.maven.plugins:maven-deploy-plug
in:2.7:deploy (default-deploy) on project img2stl: 未能部署工件:C
不能将工件 nl.byterendition:img2stl:jar:0.9.5 从 / 转移到 byterendit
ion-releases (https://svn.science.ru.nl/repos/estens/releases/):传输失败
fer 文件:https://svn.science.ru.nl/repos/estens/releases/nl/byterendition/img2s
tl/0.9.5/img2stl-0.9.5.jar。返回码为:409,ReasonPhrase:冲突。-> [赫尔
1]

我再次可以从 Eclipse 访问这个 repo。有谁知道我做错了什么?

4

9 回答 9

69

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

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

将 SSL 证书安装到您的 JRE 中应该可以永久解决该问题。

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

于 2013-07-18T21:40:20.923 回答
13

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

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

步骤 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

于 2014-02-16T11:54:13.643 回答
3

您输入settings.xml的服务器 id 为 ,localhost但您正在访问 id(s) ofbyterendition-releases和的存储库byterendition-snapshots

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

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

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

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

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

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

您正在使用localhostURL 访问您的存储库。如果您的存储库确实位于同一台主机上,这可能会起作用,但它可能无法正常工作的原因有很多。

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

无论哪种方式,放弃本地主机。如果您无法获得机器的稳定 DNS 名称,即使输入 IP 地址也是更好的选择。如果您的 SVN 服务器在 DHCP 上,那么请花时间让 DynamicDNS 正常工作(但实际上,如果可以的话,您应该为服务器获取静态 IP)。

于 2013-03-28T20:58:38.767 回答
3

https://github.com/escline/InstallCert提供了必要的工具,并提供了有关如何将远程证书导入系统范围证书存储的分步说明。

于 2014-05-17T04:51:16.067 回答
2

我发现 Java 版本可以在这里有所作为。

使用 Maven 3.0.5 我在使用 Java 6 时遇到了这个错误,但切换到 Java 7(或更高版本)为我解决了这个问题。

于 2015-07-03T09:42:28.227 回答
0

连接到服务器时看起来像是 SSL 问题。也许在用户名和密码检查之前。

您是否使用 SSL 客户端身份验证配置了 svn 服务器?这意味着您需要将客户端证书发送到服务器。

于 2013-03-28T21:09:28.347 回答
0

升级到 OSX Mavericks 后我遇到了很多安全问题

  • 亚马逊 AWS 的 SSL 问题
  • 对等点未通过 Maven 和 Eclipse 进行身份验证
  • trustAnchors 参数必须为非空

我应用了这个 JAVA 更新并解决了我的所有问题: http: //support.apple.com/kb/DL1572 ?viewlocale=en_US

于 2013-12-30T21:03:58.227 回答
0

我在使用 maven 3.6.0 时遇到了同样的问题。所有提议的解决方案(使用-Dmaven.wagon.http.ssl.insecure=true, -Dmaven.wagon.http.ssl.allowall=true, 更新 CA 商店)都对我不起作用。实际上,部署失败不是在第一个模块上而是在 ~25ish 左右,并且对于所有以前的模块都是成功的。因此,我假设通常 SSL 处理没问题,并且本地 <> 服务器连接或证书中存在一般问题。

让我很困惑一段时间,我今天偶然发现了这个 jacoco 问题,他们提到deployAtEndparameter。作为部署插件配置的一部分,将此参数添加到我的 pom.xml 为我解决了这个问题。

但是,我还不清楚为什么在以后的一些模块上部署失败,而不是在第一个模块上失败。

于 2019-01-02T09:36:28.697 回答
0

我正在使用 maven 3.5.3,我选择通过根据上述答案添加命令行参数来临时修复此 SSL 问题。但是参数的格式似乎发生了一些变化。

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

抱歉,我无法评论@Alex Punnen 的答案,所以我必须写一个新的答案。

于 2017-11-03T02:43:02.280 回答