問題
IDEA導入項目,刷新Gradle的時候,報錯,但是瀏覽器可以訪問https://repo.maven.apache.org。
Could not resolve org.projectlombok:lombok:1.18.12.
Caused by: org.gradle.internal.resource.transport.http.HttpErrorStatusCodeException: Could not HEAD 'https://repo.maven.apache.org/maven2/org/projectlombok/lombok/1.18.12/lombok-1.18.12.pom'. Received status code 403 from server: Forbidden
分析
那瀏覽器可以用代理訪問,為什么Gradle就不行呢?所以不是代理的問題。
Gradle 肯定沒有問題,如果去掉 gradle.properties中的如下配置,他就可以下載了,但是特別慢。
最終問題是要解決使用代理的情況下,讓Gradle能夠訪問https的倉庫,包括但不限於 maven中央倉庫,bintray等等倉庫。
systemProp.https.proxyUser=
systemProp.https.proxyPassword=
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=1080
systemProp.https.nonProxyHosts=localhost|maven.aliyun.com
systemProp.http.proxyUser=
systemProp.http.proxyPassword=
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=1080
systemProp.http.nonProxyHosts=localhost|maven.aliyun.com
解決
在Google搜索一番之后發現,是JAVA應該導入證書。
最終解決問題的方法是:
將Gradle的配置文件修改為socks代理:
systemProp.socks.proxyHost=127.0.0.1
systemProp.socks.proxyPort=1080
systemProp.socks.nonProxyHosts=localhost|maven.aliyun.com
並在init.gradle中添加全局鏡像服務器:
allprojects {
repositories {
maven {
url "http://maven.aliyun.com/nexus/content/groups/public"
}
}
}
鏈接(不能解決問題)
這里找到兩篇英文的文章,對JAVA證書做了一個闡述。
How to add or list certificates from keystore or trustStore in Java - Keytool Example
How SSL, HTTPS and Certificates Works in Java web Applications
此外還有一篇中文文章講了怎么導入證書到JAVA的 cacerts.
JDK信任證書
可以說一直開發HTTP的接口,很少涉及HTTPS的知識。
可以按照上述中文的文章的說明,訪問https://repo.maven.apache.org/maven2,並在瀏覽器上導出HTTPS證書,存到桌面等位置,並用JAVA_HOME下的bin/keytool導入此證書。
注意Maven的倉庫有兩個
其他網站以此類推