maven release – > peer未通过身份validation
我正在尝试释放我的软件(我之前从未这样做过),到目前为止我已经能够执行mvn release:prepare。 当我正在执行release:执行时出现以下错误:
[INFO] [ERROR]无法执行目标org.apache.maven.plugins:maven-deploy-plug in:2.7:在项目img2stl上部署(default-deploy):无法部署工件:C 不应该传递神器nl.byterendition:img2stl:jar:0.9 from / to byterenditio n-releases(https:// localhost:443 / svn / repo / releases):peer未通过身份validation - > [帮助1]
我在localhost:443设置了一个本地密码保护的svn存储库,所以我将以下内容添加到我的.m2文件夹中的settings.xml
编辑包括Edwin Buck的回答:
byterendition-releases username password byterendition-snapshots username password
这是我的pom的有用部分:
byterendition-releases https://localhost:443/svn/repo/releases byterendition-snapshots https://localhost:443/svn/repo/snapshots
如何让maven访问svn存储库?
好吧,正如Edwin Buck建议我不应该使用localhost,但由于我无法让它工作,否则我想我会尝试使用我用于工作的远程SVN服务器。 现在我得到一个不同的错误:
[INFO] [ERROR]无法执行目标org.apache.maven.plugins:maven-deploy-plug in:2.7:在项目img2stl上部署(default-deploy):无法部署工件:C 不应该传输神器nl.byterendition:img2stl:jar:0.9.5 from / to 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:Conflict。 - > [Hel 第1页]
我再次可以从Eclipse访问这个repo。 有谁知道我做错了什么?
从版本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.将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
您在settings.xml
条目是服务器ID为localhost
但您正在访问具有byterendition-releases
和byterendition-snapshots
id的存储库。
这意味着maven将不会重新认证并将凭证与这两个服务器相关联,因为它们具有不同的“身份”。 您将需要用于byterendition-releases
和byterendition-snapshots
settings.xml条目。
现在,如果您添加了类似的条目
byterendition-releases user password
然后,maven将使用用户名和密码password
满足对byterendition-releases
的https身份validation质询,因为它具有用于byterendition-releases
的服务器凭据条目。
您还必须为byterendition-snapshots
添加一个额外的条目,或者将其设置为与byterendition-releases
具有相同的服务器ID。
—编辑以跟上更新的问题—
您将使用localhost
URL访问您的存储库。 虽然如果您的存储库实际上位于同一台主机上,这可能会有效,但有很多原因可能导致它无效。
- SVN存储库位于远程SVN服务器上,因此在远程服务器以外的其他位置进行开发时将失败。
- HTTP服务器未配置为解析localhost的方式与解析外部请求的方式完全相同。
无论哪种方式,沟渠localhost。 如果您无法获得机器的稳定DNS名称,即使输入IP地址也是更好的选择。 如果您的SVN服务器使用DHCP,那么请花时间让DynamicDNS正常工作(但实际上,如果可以,您应该为服务器获取静态IP)。
我发现Java版本可以在这里发挥作用。
使用Maven 3.0.5我在Java 6中遇到此错误,但切换到Java 7(或更新版本)为我解决了这个问题。
连接到服务器时看起来像SSL问题。 也许在用户名和密码检查之前。
您是否使用SSL客户端身份validation配置svn服务器? 这意味着您需要将客户端证书发送到服务器。
升级到OSX Mavericks后,我遇到了很多安全问题
- Amazon AWS的SSL问题
- peer未通过Maven和Eclipse进行身份validation
- trustAnchors参数必须为非空
我应用了这个JAVA更新并修复了我的所有问题: http : //support.apple.com/kb/DL1572?viewlocale = en_US
我正在使用maven 3.5.3,我选择通过根据上述答案添加命令行参数来临时修复此SSL问题。 但参数的格式似乎有所改变。
-D maven.wagon.http.ssl.insecure=true -D maven.wagon.http.ssl.allowall=true
对不起我无法评论@Alex Punnen的回答,所以我得写一个新答案。