有时候几个不同的应用程序会用到相同的依赖项,在这种情况下,我们会在应用程序的外部创建一个依赖项目录结构。对于我的本地项目,我会把所有已下载的rebar依赖项保存在一个地方。例如,我把所有这些依赖项保存在 G:\ErlangWorkSpace\erl_imports 路径下。 我这台机器的组织方式是ErlangWorkSpace 目录下的任何文件都不会有备份。因为这些我感兴趣的文件在Web上到处都是,所以没有必要创建本地备份。
默认你的主机已经安装了rebar和git,在git bash 下分别执行 rebar -V 和 git version 指令,如下说明已经安装成功:
1、在 G:\ErlangWorkSpace\erl_imports路径下新建一个 rebar.config 文件,在rebar.config文件下列出我想要使用的所有依赖项,它的的内容如下:
{deps,[
{cowboy,".*",{git,"git://github.com/extend/cowboy.git","master"}},
{ranch,".*",{git,"git://github.com/extend/ranch.git","master"}},
{bitcask,".*",{git,"git://github.com/basho/bitcask.git","master"}},
{mochiweb,".*",{git,"git://github.com/mochi/mochiweb.git","master"}}
]}.
2、要获取这些依赖项,可以在保存配置文件的目录里输入命令 rebar get-deps
rebar get-deps
3、rebar不仅获取了在配置文件里指定的程序,还递归获取了这些程序所依赖的其他程序。获取程序之后,我们用 rebar compile 命令来编译它们。
rebar compile
4、最后一步是把这些依赖项的保存位置告诉Erlang,具体做法是把下面这些代码行移至启动文件${HOME}/.erlang里:
%%设置路径来让所有依赖就位
%%Home = os:getenv("HOME").
Dir = "h:/ErlangWorkSpace/erl_imports/deps",
{ok,L} = file:list_dir(Dir).
io:format("MyLibHome: ~p\n",[Dir]).
io:format("MyLibLists: ~p\n",[L]).
lists:foreach(fun(I) ->
Path = Dir ++ "/" ++ I ++ "/ebin",
io:format("MyLibPath: ~p\n",[Path]),
code:add_patha(Path)
end, L).
具体步骤如下:
1. 启动erlang shell,输入命令 init:get_argument(home). 查看erlang home目录
init:get_argument(home).
可以看到erlang的home目录。
2. 在home目录下面建立一个.erlang文件,里面内容如下(将Dir后面的路径设置成自己的依赖项路径)。
%%设置路径来让所有依赖就位
%%Home = os:getenv("HOME").
Dir = "h:/ErlangWorkSpace/erl_imports/deps",
{ok,L} = file:list_dir(Dir).
io:format("MyLibHome: ~p\n",[Dir]).
io:format("MyLibLists: ~p\n",[L]).
lists:foreach(fun(I) ->
Path = Dir ++ "/" ++ I ++ "/ebin",
io:format("MyLibPath: ~p\n",[Path]),
code:add_patha(Path)
end, L).
例如我的路径是:h:/ErlangWorkSpace/erl_imports/deps
3. 编辑完保存,重启erlang shell,输入 code:get_path(). 指令可以看到搜索路径
code:get_path().
来源:oschina
链接:https://my.oschina.net/u/3688758/blog/3034199