Leiningen 代理设置
墙已经成为平常工作效率最大的敌人。由于我们内部的 maven 仓库也部署在海外,导致 Leiningen 下载依赖经常超时。你不得不走代理才能解决。这里记录下大部分要点。
首先修改 lein 脚本本身,默认不超时,建议加入超时设置,找到下面类似的代码:
"$LEIN_JAVA_CMD" \
"${BOOTCLASSPATH[@]}" \
-Dfile.encoding=UTF-8 \
-Dmaven.wagon.http.ssl.easy=false \
-Dmaven.wagon.rto=600000 \
$LEIN_JVM_OPTS \
-Dleiningen.original.pwd="$ORIGINAL_PWD" \
-Dleiningen.script="$SCRIPT" \
-classpath "$CLASSPATH" \
clojure.main -m leiningen.core.main "$@"
新增的配置选项是 -Dmaven.wagon.rto=600000
,也就是 10 分钟超时。
其次,如果你有一个 HTTP 代理, lein 尊重 http_proxy
和 https_proxy
环境变量,可以将下面代码加入 ~/.profile
,也可以使用的时候 export 下:
http_proxy=http://username:password@proxy:port
https_proxy=http://username:password@proxy:port
设置代理后,所有 lein 发起的 http 请求都将走代理,你可以可以设置一个白名单避免代理:
http_no_proxy="*example1.com|*example2.com|*example3.com"
最后,如果你用的是 socks5 代理,比如 shadowsocks 搭建的代理服务器,那么可以安装 privoxy 将 socks5 转为 HTTP 代理:
$ brew install privoxy
安装后,默认配置在 /usr/local/etc/privoxy/config
文件,找到下面类似这行代码,修改成你的 socks5 代理配置:
forward-socks5t / 127.0.0.1:1080 .
我这里是 127.0.0.1:1080
。
默认 privoxy 监听在 8118 端口,因此设置 http_proxy
为该端口即可:
export https_proxy=http://127.0.0.1:8118
export http_proxy=http://127.0.0.1:8118