在Windows用Rebar来构建,编译,测试,发布Erlang项目
rebar是一个遵循 Erlang/OTP 原则的 Erlang 项目构建工具,使用它可以减少构建标准 Erlang/OTP 项目架构配置的工作量,并且可以很容易的编译、测试、发布 Erlang 应用程序。更强大的是,rebar 提供一种依赖管理机制,它可以使开发者很方便地通过 Git、Hg 等方式重用常见的第三方 Erlang 模块或库。
安装rebar
你可以在 https://github.com/rebar/rebar里下载zip包或者源代码自己编译。
在根目录下有一个文件bootstrap.bat。执行,你会生成两个文件rebar.cmd和rebar 这两个文件,在以后的项目开发中要用到。(bat文件执行,双击或者在cmd下执行都可以,最好有administrator权限。)
或者你可以把这两个文件Copy到你系统变量能够访问到的地方,或者把你生成的路径添加到你自己的系统变量中去。这样你就可以在任何地方使用rebar命令了。
用Rebar构建项目
首先你要创建一个你的工作目录。然后把刚才生成的两个文件Copy到你的工作目录下面,或者如果你已经添加了系统变量,则不需要。
我们这里建立一个工作路径D:\myapp,然后执行下面的命令来创建一个Erlang项目,项目的名称叫做myapp
rebar create-app appid=myapp
这条命令会创建一个src文件夹,并在下面生成3个文件:
- myapp.app.src 应用的资源描述文件,影响后面编译生成的 rebarapp.app 里的内容
- myapp_app.erl 应用的 Application Behaviour 代码文件
- myapp_sup.erl 应用的 Supervisor Behaviour 代码文件
同时rebar还内置了OPT相关的其它文档魔板,你可以自动生成相应的框架代码:
- rebar create template=simplesrv srvid=myapp_server
- rebar create template=simplefsm fsmid=myapp_fsm
- rebar create template=simpleapp appid=myapp_app
执行完之后则会在src目录下生成对应魔板的文件。这里gen_server对应simplesrv,gen_fsm对应simplefsm,application对应simpleapp,相应的魔板ID分别是srvid,fsmid,appid。
用rebar编译项目
你可以用下面的命令来编译整个项目:
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配合eunit测试项目
在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来查看测试结果。
用rebar来发布应用
如果要发布一个应用,我们需要在应用目录下,创建一个名为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
其它平台使用rebar,其实命令都是一样的,只是在安装的时候有一点点不一样,还有就是可执行程序不一样而已。大家有兴趣可以自己试验一下。
在Windows用Rebar来构建,编译,测试,发布Erlang项目的更多相关文章
- [原]Jenkins(七)---jenkins项目编译测试发布由maven构建的web项目
/** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...
- Andorid进阶7—— Ant自动编译打包&发布 android项目
http://www.cnblogs.com/tt_mc/p/3891546.html Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Ecl ...
- Ant自动编译打包&发布 android项目
Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. ...
- docker:(2)通过Dockerfile构建镜像并发布web项目
上一篇讲解了docker的基本使用 http://www.cnblogs.com/xiaochangwei/p/8204511.html 虽然通过修改获取到的镜像可以达到使用目的,但是多操作几次就会发 ...
- 【图文】 使用ant编译和发布java项目
开发JavaEE项目经常会碰到修改代码后,项目没有重新编译的问题.老大给指明了一个解决办法:用ant编译项目. ant是apache基金会下的一个项目,是基于Java语言的构建工具. ...
- Ubuntu18.04安装Docker并部署(编译、发布、构建镜像)Asp.NetCore项目全过程笔记
环境准备:阿里云Ubuntu18.04 全新安装 一.安装Docker 1.删除旧版本并更新包索引: sudo apt-get remove docker docker-engine dock ...
- windows下利用intellij idea等工具开发erlang
今天突然想在家里去年新买的电脑上写点erlang代码,然后可耻的发现家里的电脑上竟然没有开发环境,果然是去年6月以后没写过erlang代码么╮(╯▽╰)╭? 首先下载需要用的几样东西: ...
- 用 rebar 来构建、编译、测试、发布 Erlang 应用程序
转自:http://dhq.me/build-compile-eunit-release-erlang-application-with-rebar rebar 是一个遵循 Erlang/OTP 原则 ...
- Spring5源码阅读环境搭建-gradle构建编译
前沿:Spring系列生态十分丰富,涉及到各个方面.但是作为Spring生态的核心基础Spring,是最重要的环节,需要理解Spring的设计原理,我们需要解读源码. 在构建Spring源码阅 ...
随机推荐
- SQL中EXISTS怎么用[转]
SQL中EXISTS怎么用 1 2 3 4 分步阅读 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False 方法/步骤 1 EXISTS用于 ...
- jquery取框架当前的url
前提,当前frame无名或动态生成的: var url = eval($("#ifr1").attr("name")+".location.href; ...
- 使用javascript实现贪吃蛇游戏
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- CDN系统对网站的性能有极大的提升
CDN系统对网站的性能有极大的提升 打开一个网站 我们只是请求了一个页面.单个页面,实际上所有文件都是一个新的请求.以新浪为例一共发起了35个请求. 这35个请求中.只有一个动态内容.其它均为静态.这 ...
- js函数和运算符
函数是由事件驱动或者它被调用时执行可重复使用的代码块. <script> function myFunction(){ Alert(“hello World!”): } </scri ...
- PTGM and APTM
1. 性能测试过程模型(PTGM) PTGM模型包括以下几个步骤: 测试前期的准备 测试工具的引入 测试计划 测试设计与开发 测试执行与管理 测试分析 测试前期准备:主要任务为保证系统稳定和建立合适的 ...
- Java程序员必须熟知的十项技术
1.语法 Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正. 2.命令 必须熟悉JDK带的一些常用命令及其常用选项,命 ...
- Gson实现自定义解析json格式
客户端跟服务器交互的时候我们使用json实现 但是 在交互的时候除了传送json对象数据意外 我们还需要传输标志位等 比如我们现在的交互方式格式 对象 { "data": { &q ...
- Nodejs Express下引入本地文件的方法
Express的结构如下: |---node_modules------用于安装本地模块. |---public------------用于存放用户可以下载到的文件,比如图片.脚本文件.样式表 ...
- RTMP协议中文翻译(首发)(转)
Adobe公司的实时消息传输协议 摘要 此备忘录描述了 Adobe公司的实时消息传输协议(RTMP),此协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频.视频和 ...