Gradle 历险记(一):gradle清空代理设置

gradle 有些依赖要翻墙,有些依赖不要翻墙,不知道为啥,设置好代理后怎么都删不掉了,intellij 里试了几遍,记录一下如何删除gradle代理。
关键字:gradle proxy clear delete
真是坑死我了,死活删不掉,看下文吧。

一、背景知识

gradle 是否翻墙是决定于环境变量的,可以使用System.getProperty 来遍历一下,看看以下几个 key:

1
2
3
4
https.proxyPort 1080
https.proxyHost 127.0.0.1
http.proxyHost 127.0.0.1
http.proxyPort 1080

当然也有socks的代理,忘了是啥了。

二、尝试Step1

Intellij 的设置里有代理,尝试过清空、覆盖设置,都不管用,gradle 拉依赖报错里仍然使用的是1080这个代理。

project 里全局搜索字符串,搜不到相关字符串。

新建一个 project,仍然存在。

综上,应该是系统里的一个设置出了问题,于是从这方面下手。

三、尝试 Step2

首先创建一个新的 gradle 项目

1
gradle init

然后创建一个可执行的 task

1
2
3
4
5
task(shadow) {
for (Object key : System.properties.keys()) {
System.out.println(key + "++++" + System.properties.get(key))
}
}

然后运行 ./gradlew shadow ,确实环境变量是存在的;

运行 gradle shadow ,环境变量也存在;

运行时可以指定 --system-prop,全部指定为空字符串后,发现被干掉了,但每次都这么指定,就有问题了吧。

gradle --system-prop http.proxyHost="" --system-prop http.proxyPort="" --system-prop https.proxyHost="" --system-prop https.proxyPort="" --system-prop socks.proxyHost="" --system-prop socks.proxyPort="" --debug

实在没办法了,到HOME目录下的.gradle里搜一下吧,发现一大堆 wrapper 里都有这个字符串,不小心看到个gradle.properties,打开发现末尾不知道什么时候被人添加了4行话

1
2
3
4
systemProp.https.proxyPort=1080
systemProp.http.proxyHost=127.0.0.1
systemProp.https.proxyHost=127.0.0.1
systemProp.http.proxyPort=1080

尴尬,似乎是这里的问题,删掉就 ok 了。

另一种情况

有位同事的我尝试了很多种方法,就是删不掉,表现如下:

使用 gradle build的时候,无论如何都删不掉,在哪个目录下运行都会带有代理;

使用 gradlew build的时候,是没有代理的。

检查过非常多地方是否设置过,只找到一处,系统设置里“自动检测代理”,关闭后无效。

最终解决方案:关闭系统里的自动检测代理,然后使用gradle --stop 重启gradle,代理消除。

四、结论

HOME/.gradle/gradle.properties 里不要乱写东西,他妈的,这个是全局的。