Erlang Rebar 使用指南之一:入门篇
全文目录:
https://github.com/rebar/rebar/wiki
本章原文:
https://github.com/rebar/rebar/wiki/Getting-started
Rebar 是功能丰富的 Erlang 构建工具。用于Erlang/OTP项目的编译,测试,依赖管理,打包发布等。
Rebar 是自包含的脚本,可以方便地嵌入到项目中。
1 编译 rebar
$ git clone git://github.com/rebar/rebar.git
$ cd rebar
$ ./bootstrap
  查看命令说明:
$ ./rebar -c
$ ./rebar help clean
2 入门例子
2.1 创建一个程序目录
$ mkdir myapp
$ cd myapp
  把 “1 编译 rebar” 得到的 rebar 复制到myapp目录中
$ cp ../rebar/rebar .
2.2 创建第一个rebar项目
$ ./rebar create-app appid=myapp
$ touch rebar.config
  上面命令执行后,在myapp/src生成了3个文件:
  myapp.app.src - OTP应用资源
  myapp_app.erl - 一个实现 OTP application behaviour
  myapp_sup.erl - 最顶层的 OTP Supervisor behaviour
  
2.3 编译项目
$ ./rebar compile
  上面命令执行后,生成ebin目录,包含与src/erl文件对应的.beam文件.
  src/myapp.app.src 生成 ebin/myapp.app
  清理项目
$ ./rebar clean
2.4 测试项目
  Rebar 支持 EUnit和Common Test测试框架。给项目增加 EUint 单元测试,  增加下面的代码到
  src/myapp_app.erl:
-export([start/2, stop/1]). 后面添加:
%% eunit testing
-ifdef(TEST).
-include_lib("eunit/include/eunit.hrl").
-endif.
  在文件末尾添加:
%% eunit testing
-ifdef(TEST).
simple_test() ->
ok = application:start(myapp),
?assertNot(undefined == whereis(myapp_sup)).
-endif.
  ifdef 宏指示测试阶段代码,不会编译进产品中。
  开始编译和测试:
$ ./rebar compile eunit
  上面的命令将编译2次,一次输出到ebin/,一次输出到.eunit/:
    ==> myapp (compile)
    Compiled src/myapp_app.erl
    Compiled src/myapp_sup.erl
    ==> myapp (eunit)
    Compiled src/myapp_sup.erl
    Compiled src/myapp_app.erl
      Test passed.
    =INFO REPORT==== 30-Nov-2014::03:50:01 ===
        application: myapp
        exited: killed
        type: temporary
  
2.5 测试代码覆盖率统计
  在myapp/rebar.config中加入下面的行:
{cover_enabled, true}.  再次运行:
$ rebar compile eunit
  生成的统计页面在:.eunit/index.html










