rebar3使用本地依赖

简介

erlang提供了rebar3来管理依赖和编译项目,结合git和hex,项目的依赖管理会非常简单。项目本体也会非常精简。但是也带来了问题就是项目本身必须依赖外网才可以构建,因为deps库一般都是从git或者hex上进行的下载。如果是内网环境下,就无法进行构建,只能提前将依赖在外网环境下下载完整再本地进行构建。
同样如果网络环境比较差,国内连接hex的本站速度也比较慢,意味着每次构建都需要很久,因此如果能将依赖从本地进行拉取就会快很多。

实现

rebar3提供了插件功能,在有了插件功能后,就可以在不修改rebar3本体逻辑的情况下,对rebar3进行扩展,因此可以使用插件实现上面所述的将所有需要拉取的地址都替换成自己的本地git地址

本地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
或者直接配置到系统中都可以

你可能感兴趣的:(工具,erlang,erlang)