TL; DR
如何使Eclipse的内置Maven连接到使用基于证书的身份验证的HTTPS存储库?
似乎m2e
能够找到密钥库,但无法连接。命令行Maven就像使用完全相同的密钥库的魅力一样。 Run as -> Maven build
适用于外部Maven,而不适用于嵌入式Maven。
问题
我有一个带依赖关系的Maven项目。除了常规用户名 - 密码组合之外,该依赖关系在使用基于SSL证书的身份验证的存储库中可用。我需要在Eclipse Luna中使用内置的Maven。我能得到的只是handshake_failure
。对日志的调查表明,内置Maven无法找到匹配的证书。
当我将Run as -> Maven build
与外部Maven或命令行Maven一起使用时,它会成功连接到存储库并完全根据需要获取工件。
有趣的是,外部和嵌入式Mavens都有相同的版本(3.2.3)。
设置
我通过eclipse.ini
传递这些参数:
-Djavax.net.ssl.trustStore=java.cacerts
-Djavax.net.ssl.trustStorePassword=******
-Djavax.net.ssl.keyStore=private.cacerts
-Djavax.net.ssl.keyStorePassword=******
-Djavax.net.debug=ssl,handshake
trustStore
文件包含:
repository.location.url
下(文本存储库位置,例如 myrepository)。 COM ) keyStore
文件包含存储库别名下的导入PKCS证书。
设置似乎没有任何问题,因为命令行Maven工作。如果我使用外部Maven或命令行,它可以工作。如果我开始嵌入一个(它总是用于解析依赖关系),handshake error
会显示出来。
我做错了什么?我可能会遗漏一些完全明显的东西。任何帮助将不胜感激。
答案 0 :(得分:5)
对我不起作用的选项
为我解决问题的步骤
于2017年9月19日更新
答案 1 :(得分:3)
我遇到了完全相同的问题:如果存储库需要客户端SSL证书,则Eclipse无法使用嵌入式maven安装连接到外部maven存储库。
通过升级到最新的jvm(在我的情况下为1.8.0u52)并将Eclipse m2e插件升级到1.6.1版(使用Eclipse版本4.4.0)来解决问题。
答案 2 :(得分:1)
在运行配置中,选择您的maven构建,然后选择对话框顶部的JRE选项卡。将您的SSL参数放入VM参数文本区域。
这就是为我解决的问题。
答案 3 :(得分:0)
我设法通过在eclipse中设置外部Maven来修复它。 Eclipse->窗口->首选项-> Maven->安装->添加