Gradle 历险记(一):gradle清空代理设置
gradle 有些依赖要翻墙,有些依赖不要翻墙,不知道为啥,设置好代理后怎么都删不掉了,intellij 里试了几遍,记录一下如何删除gradle代理。
关键字:gradle proxy clear delete
真是坑死我了,死活删不掉,看下文吧。
一、背景知识
gradle 是否翻墙是决定于环境变量的,可以使用System.getProperty 来遍历一下,看看以下几个 key:
1 | https.proxyPort 1080 |
当然也有socks的代理,忘了是啥了。
二、尝试Step1
Intellij 的设置里有代理,尝试过清空、覆盖设置,都不管用,gradle 拉依赖报错里仍然使用的是1080这个代理。
project 里全局搜索字符串,搜不到相关字符串。
新建一个 project,仍然存在。
综上,应该是系统里的一个设置出了问题,于是从这方面下手。
三、尝试 Step2
首先创建一个新的 gradle 项目
1 | gradle init |
然后创建一个可执行的 task
1 | task(shadow) { |
然后运行 ./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 | systemProp.https.proxyPort=1080 |
尴尬,似乎是这里的问题,删掉就 ok 了。
另一种情况
有位同事的我尝试了很多种方法,就是删不掉,表现如下:
使用 gradle build的时候,无论如何都删不掉,在哪个目录下运行都会带有代理;
使用 gradlew build的时候,是没有代理的。
检查过非常多地方是否设置过,只找到一处,系统设置里“自动检测代理”,关闭后无效。
最终解决方案:关闭系统里的自动检测代理,然后使用gradle --stop
重启gradle,代理消除。
四、结论
HOME/.gradle/gradle.properties
里不要乱写东西,他妈的,这个是全局的。