- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
rebar构建工具
Rebar是一款Erlang的构建工具,使用它可以方便的编译、测试erlang程序、内联驱动和打包Erlang发行版本。Rebar是一个独立的erlang脚本,所以使用Rebar发布程序非常简单,甚至可以直接集成在项目文件夹中。默认的情况下,Rebar会按照Erlang/OTP来组织项目的结构,这样一来,构建时的配置工作量就会大大减少。Rebar同时提供了依赖库(包)管理机制,方便程序员重用已存在的模块。Rebar的依赖管理机制支持的方式非常多,甚至包括Git, Hg等少见的方式。下面是一个简单的例子演示如何将一个已经存在的项目转化为使用rebar来构建。准备开始Rebar的命令参数构建RebarRebar和OTP约定模板支持处理发行版本扩展Rebar1. 准备开始学习使用Rebar的最好的方法是使用一个简单的例子来演示如何用Rebar构建Erlang项目。1.1 创建项目首先,我们为这个例子项目创建一个文件夹:1mkdir myapp2cd myapp然后,下载rebar的二进制文件到这个项目的文件夹。注意:如果在你的PATH中间有已经有rebar了,不会对我们这个例子有影响。1cd..;2git clone git:///basho/rebar.git;3cd rebar;4./bootstrap;5cd../myapp;6mv ../rebar/rebar ./接下来,我们使用rebar的模板系统来构建我们程序的“骨架”。1./rebar create-app appid=myapp这条命令执行后会产生一个子文件夹“src”,src包含三个文件夹:myapp.app.src:OTP应用程序的资源文件myapp_app.erl:一个OTP应用程序的Application behaviourmyapp_sup.erl: 一个OTP应用程序的Supervisor behaviour1.2 编译现在,我们可以使用rebar来编译这个应用程序:1./rebar compile执行完成后,会产生一个新的文件夹ebin,在其下会生成与src文件夹下源文件对应的beam文件。同时,rebar会根据myapp.app.src动态生成一个合适OTP项目资源文件。编译完成后,如果想清除编译后的beam文件也非常简单:1./rebar clean1.3 测试Rebar为eunit和common_test两个测试框架都提供了支持,在下面这个例子中,我们使用eunit来为我们的应用程序写一个测试用例。打开文件src/myapp_app.erl,在-export()指令之后添加如下代码:1-ifdef(TEST).2-include_lib(“eunit/include/eunit.hrl”).3-endif.然后在这个文件的最后添加:1-ifdef(TEST).2simple_test() -3ok = application:start(myapp),4?assertNot(undefined == whereis(myapp_sup)).5-endif.通过使用ifdef保护我们的测试代码,保证最后的测试代码不会随着编译生成的代码进入ebin文件夹。下面我们来运行这个单元测试用例:1./rebar compile eunit此时,屏幕上显示以下类似输出结果:1== myapp (compile)2Compiled src/myapp_app.erl3Compiled src/myapp_sup.erl4== myapp (eunit)5Compiled src/myapp_sup.erl6Compiled src/myapp_app.erl7Test passed.注意:本次操作中rebar会编译myapp_app.erl文件两遍,第二遍编译会将输出放到一个特殊的文件夹(.eunit)下,生成的文件会包含调试信息和其他有用的测试标记。另外,如果你想检查我们单元测试的覆盖率,可以通过在myapp/rebar.config添加一行进行配置:1{cover_enabled, true}.然后,重新运行我们的测试用例,输入结果如下:1== myapp (compile)2== myapp (eunit)3Test passed.4Cover analysis: /Users/dizzyd/tmp/myapp/.eunit/index.html有关详细的代码覆盖率分析,被保存在.eunit/index.html文件里。2. Rebar的命令参数Rebar提供了开发中最常用的一些操作,包括:编译单元测试和覆盖分析静态分析(通过Dialyzer和Xref)生成文档依赖管理另外,rebar和reltool提供模板机制以方便OTP嵌入式系统利用。最经常使用的命令
文档评论(0)