Erlang Rebar 使用指南之一:入门篇
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 使用指南之一:入门篇的更多相关文章
- Erlang Rebar 使用指南之四:依赖管理
Erlang Rebar 使用指南之四:依赖管理 全文目录: https://github.com/rebar/rebar/wiki 本章链接: https://github.com/rebar/re ...
- Erlang Rebar 使用指南之三:Rebar和OTP程序约定和命令
Erlang Rebar 使用指南之三:Rebar和OTP程序约定和命令 全文目录: https://github.com/rebar/rebar/wiki 本章位置: https://github. ...
- Erlang Rebar 使用指南之二:制作发布版本
Erlang Rebar 使用指南之二:制作发布版本 全文目录: https://github.com/rebar/rebar/wiki 本章位置: https://github.com/rebar/ ...
- Java工程师学习指南(入门篇)
Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...
- 《Ossim应用指南》入门篇
Ossim应用入门 --在<OSSIM在企业网络管理中的应用>http://chenguang.blog.51cto.com/350944/802007 这篇文章发布之后,很多同行对oss ...
- 【OpenCV入门指南】第一篇 安装OpenCV
http://blog.csdn.net/morewindows/article/details/8225783/ win10下vs2015配置Opencv3.1.0过程详解(转) http://ww ...
- Java工程师学习指南 入门篇
Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...
- 1. web前端开发分享-css,js入门篇
关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...
- ant使用指南详细入门教程
这篇文章主要介绍了ant使用指南详细入门教程,本文详细的讲解了安装.验证安装.使用方法.使用实例.ant命令等内容,需要的朋友可以参考下 一.概述 ant 是一个将软件编译.测试.部署等步骤联系在一起 ...
随机推荐
- [sed]命令笔记
sed是linux下经常用到的工具,英文全名为stream editor. sed 在windows上的实现可以在这里找到 http://gnuwin32.sourceforge.net/packag ...
- C/C++与Matlab混合编程初探
================================================================== % 欢迎转载,尊重原创,所以转载请注明出处. % http://b ...
- PGM:贝叶斯网表示之朴素贝叶斯模型naive Bayes
http://blog.csdn.net/pipisorry/article/details/52469064 独立性质的利用 条件参数化和条件独立性假设被结合在一起,目的是对高维概率分布产生非常紧凑 ...
- Android的SharedPreferences(首选项)保存键值对
使用共享首选项 如果您有想要保存的相对较小键值集合,您应使用 SharedPreferences API.SharedPreferences 对象指向包含键值对的文件并提供读写这些文件的简单方法. 每 ...
- SSH框架实现仿淘宝购物demo
还记得六月份实习的时候,曾经做过一个电商的项目,项目里面需要实现类似淘宝购物车的移动端的demo,随着项目的进行,再一次跟购物车碰面,但是今天呢,不是移动端的需求,如何使用SSH框架实现类似淘宝的购物 ...
- everything of people’s life can changed in their twenties
还记得三年前,独自背着行李,流浪远方,来到曾经只在地理课本上才熟悉的北国,带着好奇,带着期望,带着激动的心情,想感受毛爷爷当年霸气的北国风光,千里冰封的美丽,想知道北方的面条到底有多少种花样,想走进那 ...
- 02_3中方式的反射,通过Class.forName获得Class对象,通过类.class获得字节码对象,通过类实例.getClass()的方式获得Class对象
反射中加载类: Java中有一个Class类用于代表某一个类的字节码 .class文件 对应Class //1 加载类 // java中Class代表一个类,但是到底代表哪个类要明确指出 ...
- 用API创建用户
DECLARE lc_user_name VARCHAR2(100) := 'PRAJ_TEST'; lc_user_password VARCHAR2(100) := 'Oracle123'; ld ...
- 【一天一道LeetCode】#237. Delete Node in a Linked List
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Write a ...
- Java中把JSON和List结果集互转的代码片段整理
1.将JSON字符串转换成List结果集的方式: //查询结果集 PageDatums picPageDatums = pictureLibraryService.selectPagePictureF ...