【已解决】解决Gradle在使用代理的情况下访问中央仓库返回403 Forbidden的问题
问题
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的仓库有两个
其他网站以此类推