【已解决】解决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的仓库有两个

其他网站以此类推