我正在尝试释放我的软件(之前我从未这样做过),到目前为止我已经能够执行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>
这是我的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服务器。现在我得到了一个不同的错误:
[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。有谁知道我做错了什么?
答案 0 :(得分:62)
从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/
答案 1 :(得分:12)
第1步。将DER格式* .cer(/X.509 .cert)文件中的证书下载到您当地的目录
(您可以在浏览器中执行此操作;对于Chrome,请点击锁定符号,显示Ceritficate - &gt;复制到文件)
第2步。将其导入Java信任库
\ Program_Files \ Java \ jdk1.6.0_45 \ jre \ lib \ security&gt;%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
答案 2 :(得分:3)
https://github.com/escline/InstallCert提供必要的工具,并提供有关如何将远程证书导入系统范围的证书库的分步说明。
答案 3 :(得分:2)
您在settings.xml
中的条目是服务器ID为localhost
,但您正在访问ID为byterendition-releases
和byterendition-snapshots
的存储库。
这意味着maven不会将凭据与这两个服务器进行重新认证和关联,因为它们具有不同的“身份”。您将需要byterendition-releases
和byterendition-snapshots
的settings.xml条目。
现在,如果你添加了一个像
这样的条目 <server>
<id>byterendition-releases</id>
<username>user</username>
<password>password</password>
</server>
然后,maven会遇到byterendition-releases
的https身份验证质询,用户名为user
,密码为password
,因为它有byterendition-releases
的服务器凭据条目。
您还必须为byterendition-snapshots
添加其他条目,或将其设置为与byterendition-releases
具有相同的服务器ID。
---编辑以跟上更新后的问题---
您正使用localhost
网址访问您的存储库。虽然如果您的存储库实际上位于同一台主机上,这可能会有效,但有很多原因可能导致它无效。
无论哪种方式,沟渠localhost。如果您无法获得机器的稳定DNS名称,即使放入IP地址也是更好的选择。如果您的SVN服务器使用DHCP,那么请花时间让DynamicDNS正常工作(但实际上,如果可以,您应该为服务器获取静态IP)。
答案 4 :(得分:2)
我发现Java版本可以在这里发挥作用。
使用Maven 3.0.5我在Java 6中遇到此错误,但切换到Java 7(或更新版本)为我解决了这个问题。
答案 5 :(得分:0)
连接到服务器时看起来像SSL问题。也许在用户名和密码检查之前。
您是否使用SSL客户端身份验证配置svn服务器?这意味着您需要将客户端证书发送到服务器。
答案 6 :(得分:0)
升级到OSX Mavericks后我遇到了很多安全问题
我应用了这个JAVA更新并修复了我的所有问题: http://support.apple.com/kb/DL1572?viewlocale=en_US
答案 7 :(得分:0)
我正在使用maven 3.5.3,我选择通过根据上述答案添加命令行参数来临时修复此SSL问题。但参数的格式似乎有所改变。
-D maven.wagon.http.ssl.insecure=true -D maven.wagon.http.ssl.allowall=true
很抱歉,我无法评论@Alex Punnen的答案,所以我必须写一个新答案。
答案 8 :(得分:0)
使用maven 3.6.0时出现相同的问题。所有建议的解决方案(使用-Dmaven.wagon.http.ssl.insecure = true,-Dmaven.wagon.http.ssl.allowall = true,更新CA存储)均不适用于我。实际上,部署不是在第一个模块上失败,而是在大约25欧元左右,并且对于之前的所有模块都是成功的。因此,我认为通常SSL处理是可以的,并且本地<>服务器连接或证书中存在一般问题。
让我有些困惑的是,今天我偶然发现了this jacoco issue,他们提到了the parameter。作为部署插件配置的一部分,将此参数添加到我的pom.xml中为我解决了这个问题。
但是,我还不清楚为什么在以后的某个模块上部署失败,而不是在第一个模块上失败。