简介
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 下载。
包括项目本体的依赖和依赖的依赖,项目中所有的拉取动作的地址都会被替换。
插件的下载地址在本地git服务器搭建后,也可以直接替换成自己的git服务器地址,这样就完全脱离外网
git服务搭建
本地git服务搭建有很多方法,gitbit, gitlab都是比较成熟的方案了,安装也可很简单。
搭建完成后需要将 远程的git本体进行克隆而不是代码。可以直接将文件克隆到git服务器的项目文件夹,刷新缓存后,就可以直接访问,不需要在git服务器侧进行项目创建和代码上传
git clone --bare xxxxx.git
关于hex
rebar3引入了hex管理deps,平时在deps中看到的没有地址标注的,只有项目名,或者项目名带版本的,都是hex库,hex是直接从hex网址进行拉取的,国内拉取一般都会很慢,但是如果只是为了解决hex库慢的问题,可以简单的替换hex镜像地址,官方提供了两个方案
- 在rebar.config中添加配置项
{rebar_packages_cdn, "https://hexpm.upyun.com"} - 设置环境变量
%% 命令执行前设置环境变量
HEX_CDN=https://repo.hex.pm rebar3 update
或者直接配置到系统中都可以

本文介绍了如何在rebar3中使用本地Git依赖以解决内网构建Erlang项目的问题。通过创建插件,将所有依赖的下载地址替换为本地Git服务器,从而加速依赖拉取过程。同时,详细讲解了如何搭建本地Git服务,并讨论了针对Hex包慢的问题,提出了更换Hex镜像地址的方法。
864

被折叠的 条评论
为什么被折叠?



