我们知道,1710
已经是有年代的存在了。且不说新到 1.12.2
(这也是历史版本了吧)都会中招的 OpenJDK
破坏性更新,也不谈 Intellij IDEA
不再支持 Gradle 4
以下项目,光是 mavenCentral
不再支持 http
就够我们喝一壶了:
嘛,其实这样也没什么(?),只不过我们需要通过特殊的手段解决“不再维护版本”的问题了。
话不多说,先说简单的吧。最简单的方式就是换 ForgeGradle。这里有一个 ForgeGradle 的 Fork,按照上面的操作就可以获得一个能够正常运转的 FG1.2……好吧,还是有一些问题不行的,比如上面链接说到的 OpenJDK 问题,以及他的样例项目其实是跑不起来的,你还是不能用 Gradle 5.0,只能用 4.x。具体原因相信翻一下源码就知道了。
嘛,那 OpenJDK 怎么办呢?出现了!这里有另外一个 ForgeGradle 的 Fork,是基于上面那个修改得来的。这个修改中使用了 #652 提到的解决方案,解决了 OpenJDK 的 NPE 问题。但这个版本的使用有点复杂,你需要配置 build.gradle 以使用 GitHub Packages 的 Maven。当然了,这一切都是可以搜索找到结果的。
注:之后我说不定会水一篇博客专门来讲 GitHub Packages,谁知道呢(
当然了,有简单的就有相对复杂的方法。如果你对非官方 ForgeGradle 还是没那么信任,那么你可以想办法把 http
流量上升为 https
流量。具体怎么操作呢?对了,就是 mitmproxy
。
我们这里对 mitmproxy 的使用是非常简单的。因为最后返回的是 http 流量,因此我们不需要考虑 CA 的问题。与此同时,我们也不需要解析 https 流量。最后,我们得到了下面这个脚本:
from mitmproxy import http
def request(flow: http.HTTPFlow):
if flow.request.scheme == "http" and (flow.request.pretty_host == "repo1.maven.org" or flow.request.pretty_host == "jcenter.bintray.com"):
flow.request.scheme = "https"
flow.request.port = 443
注:其实
jcenter
不是必须的,看你项目中是否用到而定。
使用方法也很简单,将文件保存为 main.py
,使用如下命令执行:
mitmproxy -s ./main.py --mode socks5 --ignore :443 --ssl-insecure
这样我们就启动了一个 socks5://127.0.0.1:8080
的 socks5
mitmproxy
了。这时候只要使用 -DproxyHost=127.0.0.1 -DproxyPort=8080
就可以正常下载了。
你问我前置代理怎么办?这个我也没办法,毕竟我是透明代理用户啊((
自己去搜吧,rua