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

Erlang Rebar 使用指南之一:入门篇的更多相关文章

  1. Erlang Rebar 使用指南之四:依赖管理

    Erlang Rebar 使用指南之四:依赖管理 全文目录: https://github.com/rebar/rebar/wiki 本章链接: https://github.com/rebar/re ...

  2. Erlang Rebar 使用指南之三:Rebar和OTP程序约定和命令

    Erlang Rebar 使用指南之三:Rebar和OTP程序约定和命令 全文目录: https://github.com/rebar/rebar/wiki 本章位置: https://github. ...

  3. Erlang Rebar 使用指南之二:制作发布版本

    Erlang Rebar 使用指南之二:制作发布版本 全文目录: https://github.com/rebar/rebar/wiki 本章位置: https://github.com/rebar/ ...

  4. Java工程师学习指南(入门篇)

    Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  5. 《Ossim应用指南》入门篇

    Ossim应用入门 --在<OSSIM在企业网络管理中的应用>http://chenguang.blog.51cto.com/350944/802007 这篇文章发布之后,很多同行对oss ...

  6. 【OpenCV入门指南】第一篇 安装OpenCV

    http://blog.csdn.net/morewindows/article/details/8225783/ win10下vs2015配置Opencv3.1.0过程详解(转) http://ww ...

  7. Java工程师学习指南 入门篇

    Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  8. 1. web前端开发分享-css,js入门篇

    关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...

  9. ant使用指南详细入门教程

    这篇文章主要介绍了ant使用指南详细入门教程,本文详细的讲解了安装.验证安装.使用方法.使用实例.ant命令等内容,需要的朋友可以参考下 一.概述 ant 是一个将软件编译.测试.部署等步骤联系在一起 ...

随机推荐

  1. Thread 方法

    Thread类的一些被Thread对象调用的方法: 1 public void start() 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 2 public void run() ...

  2. Java使用BigDecimal保留double、float运算精度、保留指定位数有效数字、四舍五入

    工具类 package --; import java.math.BigDecimal; /** * Created by kongqw on 2015/12/10. */ public final ...

  3. ORACLE时间日期格式使用总结(参考网上资料汇总)

    Oracle时间日期操作 sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdate+5/24 在系统时间基础上延迟 ...

  4. java详解final、多态、抽象类、接口原理

    1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. (3)面试相关: ...

  5. #VSTS日志# Xamarin构建支持和一大波更新

    距离上次更新#VSTS日志#已经有将近3个月的时间了,赶上最近Xamarin开源免费的消息,VSTS也推出了更多跨平台的支持和许多其他功能.这里列出一些小编觉得比较重要. 1. Xamarin 构建模 ...

  6. 如何向android studio中导入第三方类库

    下面分两种情况介绍一下如何导入第三方类库. 1.对于jar的类库,直接复制进libs目录,然后把jar复制进去,然后File->Project Structure,然后选中主module的名称, ...

  7. Cocos2Dv3.4在AppDelegate中不返回的情况及解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们通常想在app启动的早期做一些事情,可能放在AppDeleg ...

  8. UNIX网络编程——TCP长连接与短连接的区别

    一.TCP短连接 我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接.client向server发送消息,server回应client,然后 ...

  9. Jeff Atwood:软件工程已死?

    原文作者:Jeff Atwood 2009年7月,Tom DeMarco在<IEEE Software>杂志上发表了一篇论文,题为"Software Engineering: A ...

  10. 【一天一道LeetCode】#100. Same Tree(100题大关)

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given t ...