简介
erlang提供了rebar3来管理依赖和编译项目,结合git和hex,项目的依赖管理会非常简单。项目本体也会非常精简。但是也带来了问题就是项目本身必须依赖外网才可以构建,因为deps库一般都是从git或者hex上进行的下载。如果是内网环境下,就无法进行构建,只能提前将依赖在外网环境下下载完整再本地进行构建。
同样如果网络环境比较差,国内连接hex的本站速度也比较慢,意味着每次构建都需要很久,因此如果能将依赖从本地进行拉取就会快很多。
实现
rebar3提供了插件功能,在有了插件功能后,就可以在不修改rebar3本体逻辑的情况下,对rebar3进行扩展,因此可以使用插件实现上面所述的将所有需要拉取的地址都替换成自己的本地git地址
只需要在项目顶层的rebar.config中加入
{plugins, [
{rebar3_local_deps, ".*",
{git, "git://github.com/yidayoung/rebar3_local_deps.git", {branch, "master"}}}
]}.
{local_deps_url, "http://127.0.0.1:9001/r/"}.
local_deps_url字段是本地的git服务器前缀,例如如果我们要下载ct库,无论rebar.config中指定的ct库的下载方式是啥,都会替换成http://127.0.0.1:9001/r/ct.git 下载。
包括项目本体的依赖和依赖的依赖,项目中所有的拉取动作的地址都会被替