我经常需要运行“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错误。
答案 0 :(得分:180)
您可以通过添加以下一个或多个命令行参数来禁用SSL证书检查:
-Dmaven.wagon.http.ssl.insecure=true
- 允许对用户生成的证书使用宽松的SSL检查。-Dmaven.wagon.http.ssl.allowall=true
- 启用服务器的X.509证书与主机名的匹配。如果禁用,将使用类似检查的浏览器。-Dmaven.wagon.http.ssl.ignore.validity.dates=true
- 忽略证书日期的问题。官方文件:http://maven.apache.org/wagon/wagon-providers/wagon-http/
这是一个易于复制和粘贴的oneliner:
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
Ajay Gautam建议您也可以将上述内容添加到~/.mavenrc
文件中,因为每次都不必在命令行中指定它:
$ cat ~/.mavenrc
MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true"
答案 1 :(得分:32)
对我有用的替代方法是告诉Maven使用http:而不是https:使用Maven Central时将以下内容添加到settings.xml:
<settings>
.
.
.
<mirrors>
<mirror>
<id>central-no-ssl</id>
<name>Central without ssl</name>
<url>http://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
.
.
.
</settings>
您的里程可能会有所不同。
答案 2 :(得分:1)
您还可以将m2e配置为使用HTTP而不是HTTPS
答案 3 :(得分:1)
创建文件夹${USER_HOME}/.mvn
并在其中放入一个名为maven.config
的文件。
内容应为:
-Dmaven.wagon.http.ssl.insecure=true
-Dmaven.wagon.http.ssl.allowall=true
-Dmaven.wagon.http.ssl.ignore.validity.dates=true
希望这有帮助。
答案 4 :(得分:0)
我发现最新的 jdk16 将无法通过 SSL 证书,所以我必须使用
-Dmaven.wagon.http.ssl.ignore.validity.dates=true
解决;切换到 jdk11(LTS) 然后所有问题都消失了。
jdk1.8 也测试过了,没有任何参数也能正常工作;但是 jdk1.8 处于无更新模式,最好转到 LTS jdk 版本,而不是最新的 jdk16。
答案 5 :(得分:0)
如果您想将所有相同的 maven.wagon.http.ssl.
设置放入 ~/.m2/settings.xml
而不是 ~/.mavenrc
,这就是您需要放入文件的内容:
<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 https://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<profile>
<id>definedInM2SettingsXML</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<maven.wagon.http.ssl.insecure>true</maven.wagon.http.ssl.insecure>
<maven.wagon.http.ssl.allowall>true</maven.wagon.http.ssl.allowall>
<maven.wagon.http.ssl.ignore.validity.dates>true</maven.wagon.http.ssl.ignore.validity.dates>
</properties>
</profile>
</profiles>
</settings>