rebar是一个遵循 Erlang/OTP 原则的 Erlang 项目构建工具,使用它能够减小构建标准 Erlang/OTP 项目架构配置的工做量,而且能够很容易的编译、测试、发布 Erlang 应用程序。更强大的是,rebar 提供一种依赖管理机制,它可使开发者很方便地经过 Git、Hg 等方式重用常见的第三方 Erlang 模块或库。html
你能够在 https://github.com/rebar/rebar里下载zip包或者源代码本身编译。node
在根目录下有一个文件bootstrap.bat。执行,你会生成两个文件rebar.cmd和rebar 这两个文件,在之后的项目开发中要用到。(bat文件执行,双击或者在cmd下执行均可以,最好有administrator权限。)git
或者你能够把这两个文件Copy到你系统变量可以访问到的地方,或者把你生成的路径添加到你本身的系统变量中去。这样你就能够在任何地方使用rebar命令了。github
首先你要建立一个你的工做目录。而后把刚才生成的两个文件Copy到你的工做目录下面,或者若是你已经添加了系统变量,则不须要。bootstrap
咱们这里创建一个工做路径D:\myapp,而后执行下面的命令来建立一个Erlang项目,项目的名称叫作myapp架构
rebar create-app appid=myappapp
这条命令会建立一个src文件夹,并在下面生成3个文件:框架
同时rebar还内置了OPT相关的其它文档魔板,你能够自动生成相应的框架代码:工具
执行完以后则会在src目录下生成对应魔板的文件。这里gen_server对应simplesrv,gen_fsm对应simplefsm,application对应simpleapp,相应的魔板ID分别是srvid,fsmid,appid。测试
你能够用下面的命令来编译整个项目:
rebar compile
编译完成以后,会生成一个ebin文件夹,里面存放了应用的资源文件myapp.app和对应beam文件。
rebar clean 能够用来清理编译玩的项目
rebar doc 能够用这个命令来生成对应的doc文档,会生成一个doc的文件夹,打开里面的index.html就能够看到全部的模块的API描述,固然你必需要符合Edoc的描述格式。具体能够参照这里:http://www.erlang.org/doc/apps/edoc/chapter.html
在rebar文件夹下有个rebar.config文件,能够在这里配置eunit选项来进行测试。首先咱们把rebar.config拷贝到咱们的项目目录里。而后更改rebar.config文件的内容成下面:
%%-*- mode: erlang -*-
%% Erlang compiler options
{erl_opts, [debug_info,
{i, "test"},
{src_dirs, ["src"]}]}.
{eunit_opts, [verbose, {report, {eunit_surefire, [{dir, "."}]}}]}.
{cover_enabled, true}.
上面的配置会加载test文件下的测试文件,因此咱们须要本身创建一个test文件夹。
而后要生成相应的测试用例文件。首先咱们创建一个文件myapp_test.hrl的测试用例文件,内容以下
-include_lib("eunit/include/eunit.hrl").
my_test() ->
?assert(1 + 2 =:= 3).
simple_test() ->
ok = application:start(myapp),
?assertNot(undefined =:= whereis(myapp_sup)).
而后在myapp_server.erl文件的末尾加上下面的代码:
-ifdef(TEST).
-include("myapp_test.hrl").
-endif.
若是有必要你须要在每一个模块的文件最后都加上上面的代码,而后执行下面的命令来进行eunit测试:
Rebar compile eunit
若是没有什么问题的话,你应该能看到下面的信息,会告诉你eunit测试状况:
======================== EUnit ========================
module 'rebarapp_server'
rebarapp_server: my_test...ok
rebarapp_server: simple_test...[0.015 s] ok
[done in 0.047 s]
module 'myfsm'
module 'myapp_sup'
module 'myapp_app'
=======================================================
All 2 tests passed.
Cover analysis: d:/Mongodb/projects/.eunit/index.html
这样你就能够打开.eunit/index.html来查看测试结果。
若是要发布一个应用,咱们须要在应用目录下,建立一个名为rel的文件夹,用来做为发布用的文件夹。而后咱们进入到新建的rel文件夹下面,用下面的命令来建立一个名为myapp的独立的Erlang VM节点:
rebar create-node nodeid=myapp
修改rel/reltools.config里的lib_dirs的值,默认这里是一个空的列表,改为应用所在的目录结构"[../../]"。
而后应用的根目录下面,在rebar.config里加上一行,把新建的rel文件夹放入到rebar能够访问的子文件夹里,做为应用内容的发布文件夹:
{sub_dirs, ["rel"]}
而后须要编译一下项目:
rebar compile
若是没有什么错误,那么就能够进行发布了:
rebar generate
若是在终端上没有发现任何错误的话,那么就证实发布成功了。咱们就能够来执行和测试咱们的发布内容了。咱们会发如今发布文件夹下,生成了一堆文件,在rel\myapp\bin 下面生成了一系列的bat文件,用来控制和操做应用的情况,用法以下:
myapp [install|uninstall|start|stop|restart|console|ping|query|attach|upgrade]
myapp install:会安装一个service到本地服务里,这样你电脑启动的时候这个节点就已经可以执行了。
myapp uninstall:卸载这个服务
myapp start:启动服务 stop:中止服务 restart:重启服务
myapp console:用来启动一个Erlang Shell来执行这个节点
后面几个还没用,等用过了,我再来补充这里的内容。
其它平台使用rebar,其实命令都是同样的,只是在安装的时候有一点点不同,还有就是可执行程序不同而已。你们有兴趣能够本身试验一下。