我经常需要运行“mvn”命令:
mvn -f pom.xml clean install -Dmaven.test.skip=false --settings /Users/myhome/settings.xml -X -Djavax.net.ssl.trustStore=/Users/myhome/truststore.jks -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword=dummy -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol -U
由于我需要与各种其他域集成,所以目前每次我都要将他们的证书添加到我的truststore.jks中,以防止SSL握手错误。
有什么办法可以配置mvn忽略SSL错误。
6条答案
按热度按时间2guxujil1#
您可以通过添加以下一个或多个命令行参数来禁用SSL证书检查:
-Dmaven.wagon.http.ssl.insecure=true
-允许对用户生成的证书使用宽松的SSL检查。-Dmaven.wagon.http.ssl.allowall=true
-启用服务器的X.509证书与主机名的匹配。如果禁用,将使用类似check的浏览器。-Dmaven.wagon.http.ssl.ignore.validity.dates=true
-忽略证书日期问题。Dmaven.resolver.transport=wagon
-在Maven 3.9.0和更新版本中,默认情况下,他们已经切换到使用Apache HttpClient 4。您需要使用此选项切换回wagon
,以使上述标志生效。正式文件:http://maven.apache.org/wagon/wagon-providers/wagon-http/
下面是一个简单的复制粘贴工具:
Ajay Gautam建议您也可以将上述内容添加到
~/.mavenrc
文件中,因为不必每次都在命令行中指定它:wfveoks02#
另一个对我有效的方法是告诉Maven使用http:而不是https:使用Maven Central时,通过将以下内容添加到settings.xml:
当然,您的里程可能会有所不同。
azpvetkf3#
创建一个文件夹
${USER_HOME}/.mvn
,并将名为maven.config
的文件放入其中。其内容应为:
希望这个有用。
5w9g7ksd4#
我发现最新的jdk 16将失败的SSL证书,所以我不得不使用
-Dmaven.wagon.http.ssl.ignore.validity.dates=true
来解决;切换到jdk 11(LTS),然后所有问题都消失了。也测试了jdk1.8,其也在没有任何参数的情况下工作;但是jdk1.8处于无更新模式,最好转到LTS jdk版本,而不是最新的jdk 16。
ar5n3qh55#
您还可以将m2e配置为使用HTTP而不是HTTPS
force-m2e-to-use-http-instead-of-https
nue99wik6#
如果您想将所有相同的
maven.wagon.http.ssl.
设置放入~/.m2/settings.xml
而不是~/.mavenrc
,则需要在文件中放入以下内容: